微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

elasticsearch 查询数据

一、随机获取数据

"sort": {
    "_script": { 
      "script": "Math.random()",
      "type": "number"
    }
}

二、模糊查询

1、prefix 前缀查询

  • prefix 前缀查询查询 id 以 “aa-” 开头的数据,_source 段值为查询后需要返回的字段
GET 索引名/_search
{
  "query": {
    "bool": {
      "filter": [
        {
          "prefix": {
            "id": "aa-"
          }
        }
      ]
    }
  },
  "_source": ["title","id"]
}

2、wildcard 通配查询

GET 索引名/_search
{
  "query": {
    "bool": {
      "filter": [
        {
          "wildcard": {
            "id": "aa-*"
          }
        }
      ]
    }
  },
  "_source": ["title","id"]
}
通配 含义 实例
* 匹配 0 或多个字符 a*b,a与b之间可以有任意长度的任意字符, 也可以一个也没有, 如 aabcb, axyzb, a012b, ab
? 匹配任意单个字符 a?b,a与b之间有且只有一个字符, 可以是任意字符, 如 aab, abb, acb, a0b
[list] 匹配 list 中的任意单个字符 a[xyz]b,a与b之间必须也只能有一个字符, 但只能是 x 或 y 或 z, 如 axb, ayb, azb。
[!list] 匹配除 list 中的任意单一字符 a[!0-9]b,a与b之间必须也只能有一个字符, 但不能是阿拉伯数字, 如 axb, aab, a-b。
[c1-c2] 匹配 c1-c2 中的任意单一字符 a[0-9]b,匹配0与9之间其中一个字符,如 a0b, a1b… a9b
{s1,s2,…} 匹配 s1 或 s2 (或更多)中的一个字符串 a{abc,xyz,123}b,a与b之间只能是abc或xyz或123这三个字符串之一

3、regexp 正则查询

GET 索引名/_search
{
  "query": {
    "bool": {
      "filter": [
        {
          "regexp": {
            "id": "aa-.*"
          }
        }
      ]
    }
  },
  "_source": ["title","id"]
}

三、多字段查询 best_fields、most_fields、cross_fields

参考链接https://elastic.blog.csdn.net/article/details/111412721

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐