ES常用多条件查询
创始人
2024-09-26 15:23:32
0

ES常用多条件查询

1. bool 查询

含义:使用 mustfilter 条件,必须匹配 field1 的值为 value1,并且 field2 的值为 value2
curl -X GET "localhost:9200/index/_search" -H 'Content-Type: application/json' -d' {   "query": {     "bool": {       "must": [         { "match": { "field1": "value1" } }       ],       "filter": [         { "term": { "field2": "value2" } }       ]     }   } }' 

2. must_not 查询

含义:排除 field1 的值为 value1 的文档。
curl -X GET "localhost:9200/index/_search" -H 'Content-Type: application/json' -d' {   "query": {     "bool": {       "must_not": [         { "term": { "field1": "value1" } }       ]     }   } }' 

3. should 查询

含义:至少满足一个条件,field1 的值为 value1field2 的值为 value2
curl -X GET "localhost:9200/index/_search" -H 'Content-Type: application/json' -d' {   "query": {     "bool": {       "should": [         { "term": { "field1": "value1" } },         { "term": { "field2": "value2" } }       ],       "minimum_should_match": 1     }   } }' 

4. range 查询

含义:范围查询,field1 的值在 10 到 20 之间。
curl -X GET "localhost:9200/index/_search" -H 'Content-Type: application/json' -d' {   "query": {     "range": {       "field1": {         "gte": 10,         "lte": 20       }     }   } }' 

5. exists 查询

含义:查询 field1 存在的文档。
curl -X GET "localhost:9200/index/_search" -H 'Content-Type: application/json' -d' {   "query": {     "exists": {       "field": "field1"     }   } }' 

6. prefix 查询

含义:前缀查询,field1 的值以 val 开头。
curl -X GET "localhost:9200/index/_search" -H 'Content-Type: application/json' -d' {   "query": {     "prefix": {       "field1": "val"     }   } }' 

7. wildcard 查询

含义:通配符查询,field1 的值以 val 开头。
curl -X GET "localhost:9200/index/_search" -H 'Content-Type: application/json' -d' {   "query": {     "wildcard": {       "field1": "val*"     }   } }' 

8. regexp 查询

含义:正则表达式查询,field1 的值匹配正则表达式 val.*
curl -X GET "localhost:9200/index/_search" -H 'Content-Type: application/json' -d' {   "query": {     "regexp": {       "field1": "val.*"     }   } }' 

9. fuzzy 查询

含义:模糊查询,field1 的值接近 value1
curl -X GET "localhost:9200/index/_search" -H 'Content-Type: application/json' -d' {   "query": {     "fuzzy": {       "field1": {         "value": "value1",         "fuzziness": "AUTO"       }     }   } }' 

10. ids 查询

含义:ID 查询,查询 ID 为 1, 2, 3 的文档。
curl -X GET "localhost:9200/index/_search" -H 'Content-Type: application/json' -d' {   "query": {     "ids": {       "values": ["1", "2", "3"]     }   } }' 

11. terms 查询

含义:多值匹配查询,field1 的值为 value1, value2, 或 value3
curl -X GET "localhost:9200/index/_search" -H 'Content-Type: application/json' -d' {   "query": {     "terms": {       "field1": ["value1", "value2", "value3"]     }   } }' 

12. match 查询

含义:匹配查询,field1 的值为 value1
curl -X GET "localhost:9200/index/_search" -H 'Content-Type: application/json' -d' {   "query": {     "match": {       "field1": "value1"     }   } }' 

13. match_phrase 查询

含义:短语匹配查询,field1 的值为 value1 value2
curl -X GET "localhost:9200/index/_search" -H 'Content-Type: application/json' -d' {   "query": {     "match_phrase": {       "field1": "value1 value2"     }   } }' 

14. multi_match 查询

含义:多字段匹配查询,field1field2 的值为 value1
curl -X GET "localhost:9200/index/_search" -H 'Content-Type: application/json' -d' {   "query": {     "multi_match": {       "query": "value1",       "fields": ["field1", "field2"]     }   } }' 

15. constant_score 查询

含义:常量评分查询,field1 的值为 value1,并且提升评分为 1.2。
curl -X GET "localhost:9200/index/_search" -H 'Content-Type: application/json' -d' {   "query": {     "constant_score": {       "filter": {         "term": { "field1": "value1" }       },       "boost": 1.2     }   } }' 

16. dis_max 查询

含义:不相交最大查询,field1 的值为 value1field2 的值为 value2,并且使用 tie_breaker 为 0.7。
curl -X GET "localhost:9200/index/_search" -H 'Content-Type: application/json' -d' {   "query": {     "dis_max": {       "queries": [         { "term": { "field1": "value1" } },         { "term": { "field2": "value2" } }       ],       "tie_breaker": 0.7     }   } }' 

17. function_score 查询

含义:函数评分查询,field1 的值为 value1,并且 field2 的值为 value2 时,权重为 2,评分模式为乘法。
curl -X GET "localhost:9200/index/_search" -H 'Content-Type: application/json' -d' {   "query": {     "function_score": {       "query": { "match": { "field1": "value1" } },       "functions": [         {           "filter": { "term": { "field2": "value2" } },           "weight": 2         }       ],       "boost_mode": "multiply"     }   } }' 

18. nested 查询

含义:嵌套查询,nested_field.field1 的值为 value1
curl -X GET "localhost:9200/index/_search" -H 'Content-Type: application/json' -d' {   "query": {     "nested": {       "path": "nested_field",       "query": {         "match": { "nested_field.field1": "value1" }       }     }   } }' 

19. has_child 查询

含义:子文档查询,查询子文档类型为 child_typefield1 的值为 value1 的父文档。
curl -X GET "localhost:9200/index/_search" -H 'Content-Type: application/json' -d' {   "query": {     "has_child": {       "type": "child_type",       "query": {         "match": { "field1": "value1" }       }     }   } }' 

20. has_parent 查询

含义:父文档查询,查询父文档类型为 parent_typefield1 的值为 value1 的子文档。
curl -X GET "localhost:9200/index/_search" -H 'Content-Type: application/json' -d' {   "query": {     "has_parent": {       "parent_type": "parent_type",       "query": {         "match": { "field1": "value1" }       }     }   } }' 

21. geo_distance 查询

含义:地理距离查询,查询距离特定地理位置(lat, lon)在 200km 以内的文档。
curl -X GET "localhost:9200/index/_search" -H 'Content-Type: application/json' -d' {   "query": {     "geo_distance": {       "distance": "200km",       "location": {         "lat": 40,         "lon": -70       }     }   } }' 

22. geo_bounding_box 查询

含义:地理边界框查询,查询在特定边界框内的文档。
curl -X GET "localhost:9200/index/_search" -H 'Content-Type: application/json' -d' {   "query": {     "geo_bounding_box": {       "location": {         "top_left": {           "lat": 40.73,           "lon": -74.1         },         "bottom_right": {           "lat": 40.01,           "lon": -71.12         }       }     }   } }' 

23. geo_polygon 查询

含义:地理多边形查询,查询在特定多边形内的文档。
curl -X GET "localhost:9200/index/_search" -H 'Content-Type: application/json' -d' {   "query": {     "geo_polygon": {       "location": {         "points": [           { "lat": 40, "lon": -70 },           { "lat": 30, "lon": -80 },           { "lat": 20, "lon": -90 }         ]       }     }   } }' 

24. script 查询

含义:脚本查询,使用自定义脚本查询文档。
curl -X GET "localhost:9200/index/_search" -H 'Content-Type: application/json' -d' {   "query": {     "script": {       "script": {         "source": "doc['field1'].value > params.value",         "params": {           "value": 5         }       }     }   } }' 

25. more_like_this 查询

含义:相似文档查询,查询与给定文本相似的文档。
curl -X GET "localhost:9200/index/_search" -H 'Content-Type: application/json' -d' {   "query": {     "more_like_this": {       "fields": ["field1", "field2"],       "like": "text to find similar documents",       "min_term_freq": 1,       "max_query_terms": 12    好的,继续输出剩余的多条件查询操作。  ### 25. `more_like_this` 查询  #### 含义:相似文档查询,查询与给定文本相似的文档。  ```sh curl -X GET "localhost:9200/index/_search" -H 'Content-Type: application/json' -d' {   "query": {     "more_like_this": {       "fields": ["field1", "field2"],       "like": "text to find similar documents",       "min_term_freq": 1,       "max_query_terms": 12     }   } }' 

26. percolate 查询

含义:预处理查询,查询与给定文档匹配的查询。
curl -X GET "localhost:9200/index/_search" -H 'Content-Type: application/json' -d' {   "query": {     "percolate": {       "field": "query",       "document": {         "field1": "value1",         "field2": "value2"       }     }   } }' 

27. span_term 查询

含义:跨度术语查询,查询 field1 的值为 value1 的文档。
curl -X GET "localhost:9200/index/_search" -H 'Content-Type: application/json' -d' {   "query": {     "span_term": {       "field1": "value1"     }   } }' 

28. span_near 查询

含义:跨度邻近查询,查询 field1 的值为 value1value2,并且它们之间的距离不超过 5 个词。
curl -X GET "localhost:9200/index/_search" -H 'Content-Type: application/json' -d' {   "query": {     "span_near": {       "clauses": [         { "span_term": { "field1": "value1" } },         { "span_term": { "field1": "value2" } }       ],       "slop": 5,       "in_order": true     }   } }' 

29. span_or 查询

含义:跨度或查询,查询 field1 的值为 value1value2 的文档。
curl -X GET "localhost:9200/index/_search" -H 'Content-Type: application/json' -d' {   "query": {     "span_or": {       "clauses": [         { "span_term": { "field1": "value1" } },         { "span_term": { "field1": "value2" } }       ]     }   } }' 

30. span_not 查询

含义:跨度非查询,查询 field1 的值为 value1,但不包含 value2 的文档。
curl -X GET "localhost:9200/index/_search" -H 'Content-Type: application/json' -d' {   "query": {     "span_not": {       "include": { "span_term": { "field1": "value1" } },       "exclude": { "span_term": { "field1": "value2" } }     }   } }' 

31. span_containing 查询

含义:跨度包含查询,查询包含 field1 的值为 value1 的文档。
curl -X GET "localhost:9200/index/_search" -H 'Content-Type: application/json' -d' {   "query": {     "span_containing": {       "little": { "span_term": { "field1": "value1" } },       "big": { "span_term": { "field2": "value2" } }     }   } }' 

32. span_within 查询

含义:跨度内查询,查询 field1 的值为 value1,并且在 field2 的值为 value2 的范围内。
curl -X GET "localhost:9200/index/_search" -H 'Content-Type: application/json' -d' {   "query": {     "span_within": {       "little": { "span_term": { "field1": "value1" } },       "big": { "span_term": { "field2": "value2" } }     }   } }' 

33. span_first 查询

含义:跨度首查询,查询 field1 的值为 value1,并且在文档的前 3 个词内。
curl -X GET "localhost:9200/index/_search" -H 'Content-Type: application/json' -d' {   "query": {     "span_first": {       "match": { "span_term": { "field1": "value1" } },       "end": 3     }   } }' 

34. exists 查询

含义:存在查询,查询 field1 存在的文档。
curl -X GET "localhost:9200/index/_search" -H 'Content-Type: application/json' -d' {   "query": {     "exists": {       "field": "field1"     }   } }' 

35. prefix 查询

含义:前缀查询,查询 field1 的值以 value 为前缀的文档。
curl -X GET "localhost:9200/index/_search" -H 'Content-Type: application/json' -d' {   "query": {     "prefix": {       "field1": "value"     }   } }' 

36. wildcard 查询

含义:通配符查询,查询 field1 的值匹配 val* 的文档。
curl -X GET "localhost:9200/index/_search" -H 'Content-Type: application/json' -d' {   "query": {     "wildcard": {       "field1": "val*"     }   } }' 

37. regexp 查询

含义:正则表达式查询,查询 field1 的值匹配正则表达式 value.* 的文档。
curl -X GET "localhost:9200/index/_search" -H 'Content-Type: application/json' -d' {   "query": {     "regexp": {       "field1": "value.*"     }   } }' 

38. fuzzy 查询

含义:模糊查询,查询 field1 的值为 value1,允许有编辑距离为 2 的模糊匹配。
curl -X GET "localhost:9200/index/_search" -H 'Content-Type: application/json' -d' {   "query": {     "fuzzy": {       "field1": {         "value": "value1",         "fuzziness": 2       }     }   } }' 

39. type 查询

含义:类型查询,查询文档类型为 type1 的文档。
curl -X GET "localhost:9200/index/_search" -H 'Content-Type: application/json' -d' {   "query": {     "type": {       "value": "type1"     }   } }' 

40. terms_set 查询

含义:术语集查询,查询 field1 的值包含在给定的术语集中的文档。
curl -X GET "localhost:9200/index/_search" -H 'Content-Type: application/json' -d' {   "query": {     "terms_set": {       "field1": {         "terms": ["value1", "value2", "value3"],         "minimum_should_match_field": "required_matches"       }     }   } }' 

相关内容

热门资讯

1个插件!(WPK漏洞)外挂辅... 1个插件!(WPK漏洞)外挂辅助器工具(辅助挂)软件透明挂(2020已更新)(哔哩哔哩);亲真的是有...
三个小技巧!(Wepoke代打... 您好,Wepoke代打ai这款游戏可以开挂的,确实是有挂的,需要了解加微【485275054】很多玩...
七个小技巧!(wpk辅助)外挂... 亲,wpk辅助这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,...
一个小技巧!(新Wepoke)... 您好,新Wepoke这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】很多玩家在这...
华为荣耀4A怎么改系统 华为荣耀4A更改系统通常指的是刷机或升级固件。由于华为已停止对荣耀4A的官方支持,只能尝试第三方RO...
Windows7系统远程在哪里 在Windows7系统中,可以通过“开始”菜单的“附件”中找到“远程桌面连接”工具来实现远程操作。(...
三星手机到哪里更新系统 三星手机系统更新通常在“设置”-“软件更新”中进行。也可通过下载三星Smart Switch PC版...
安卓用苹果的刷机包 安卓手机不能使用苹果的刷机包,因为它们的操作系统不同。安卓手机应使用专为安卓系统设计的刷机包。(图片...
爱奇艺安卓用户名 爱奇艺安卓用户名通常是您在注册时自定义的昵称,可以是字母、数字或组合。请确保遵守平台的命名规则和社区...
z9d升级安卓7.0 z9d升级安卓7.0需要通过官方或第三方固件下载后进行刷机操作,具体步骤包括下载固件、备份数据、进入...