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

ES常用多条件查询

1. bool 查询

含义:使用 must 和 filter 条件,必须匹配 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 的值为 value1 或 field2 的值为 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 查询

含义:多字段匹配查询,field1 或 field2 的值为 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 的值为 value1 或 field2 的值为 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_type 且 field1 的值为 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_type 且 field1 的值为 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 的值为 value1 和 value2,并且它们之间的距离不超过 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 的值为 value1 或 value2 的文档。
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"       }     }   } }' 

相关内容

热门资讯

最新技巧!!wepoker有没... 很多人使用云端 AI 时,都担心wepoker有没有辅助、内部资料上传带来隐私风险。这款本地运行的 ...
一秒答解!wepoker怎么增... 您好,一秒答解!wepoker怎么增加运气,WPK有挂吗确实有挂下载(最初有辅助挂)这款游戏可以开挂...
一秒答解!wpk辅助器,德扑之... wpk辅助器AI 游戏攻略黑科技上线本地缓存功能,离线查阅能力开挂。提前下载对应游戏攻略数据包,断网...
分辨真假!德普之星透视辅助,w... 分辨真假!德普之星透视辅助,wepoker开挂透视教程脚本(总是是真的有辅助挂)AI 是一款可以让一...
每日必看推荐!wepoker怎... 您好:wepoker怎么提高运气这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很...
推荐一款!!wepoker黑侠... 一款 AI 游戏攻略黑科技工具上线,查攻略效率直接开挂。它整合版本更新、装备搭配、BOSS 打法、牌...
一秒答解!wpk俱乐部辅助器,... 一秒答解!wpk俱乐部辅助器,德扑之星开挂脚本助手(固有有辅助器)AI 是一款可以让一直输的玩家修复...
玩家攻略!wepoker好友房... 您好,玩家攻略!wepoker好友房开挂,WPK哪里有挂神器(一贯有开挂)这款游戏可以开挂的,确实是...
重大通报!!智星德州可以透视吗... 很多人使用云端 AI 时,都担心智星德州可以透视吗、内部资料上传带来隐私风险。这款本地运行的 AI ...
玩家爆料!智星菠萝有挂吗,WP... 智星菠萝有挂吗AI 游戏攻略黑科技上线本地缓存功能,离线查阅能力开挂。提前下载对应游戏攻略数据包,断...