ES常用多条件查询

ES常用多条件查询

1. bool 查询

含义:使用 mustfilter 条件,必须匹配 field1 的值为 value1,并且 field2 的值为 value2
sh 复制代码
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 的文档。
sh 复制代码
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
sh 复制代码
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 之间。
sh 复制代码
curl -X GET "localhost:9200/index/_search" -H 'Content-Type: application/json' -d'
{
  "query": {
    "range": {
      "field1": {
        "gte": 10,
        "lte": 20
      }
    }
  }
}'

5. exists 查询

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

6. prefix 查询

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

7. wildcard 查询

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

8. regexp 查询

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

9. fuzzy 查询

含义:模糊查询,field1 的值接近 value1
sh 复制代码
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 的文档。
sh 复制代码
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
sh 复制代码
curl -X GET "localhost:9200/index/_search" -H 'Content-Type: application/json' -d'
{
  "query": {
    "terms": {
      "field1": ["value1", "value2", "value3"]
    }
  }
}'

12. match 查询

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

13. match_phrase 查询

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

14. multi_match 查询

含义:多字段匹配查询,field1field2 的值为 value1
sh 复制代码
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。
sh 复制代码
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。
sh 复制代码
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,评分模式为乘法。
sh 复制代码
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
sh 复制代码
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 的父文档。
sh 复制代码
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 的子文档。
sh 复制代码
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 以内的文档。
sh 复制代码
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 查询

含义:地理边界框查询,查询在特定边界框内的文档。
sh 复制代码
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 查询

含义:地理多边形查询,查询在特定多边形内的文档。
sh 复制代码
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 查询

含义:脚本查询,使用自定义脚本查询文档。
sh 复制代码
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 查询

含义:相似文档查询,查询与给定文本相似的文档。
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
   好的,继续输出剩余的多条件查询操作。

### 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 查询

含义:预处理查询,查询与给定文档匹配的查询。
sh 复制代码
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 的文档。
sh 复制代码
curl -X GET "localhost:9200/index/_search" -H 'Content-Type: application/json' -d'
{
  "query": {
    "span_term": {
      "field1": "value1"
    }
  }
}'

28. span_near 查询

含义:跨度邻近查询,查询 field1 的值为 value1value2,并且它们之间的距离不超过 5 个词。
sh 复制代码
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 的文档。
sh 复制代码
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 的文档。
sh 复制代码
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 的文档。
sh 复制代码
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 的范围内。
sh 复制代码
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 个词内。
sh 复制代码
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 存在的文档。
sh 复制代码
curl -X GET "localhost:9200/index/_search" -H 'Content-Type: application/json' -d'
{
  "query": {
    "exists": {
      "field": "field1"
    }
  }
}'

35. prefix 查询

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

36. wildcard 查询

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

37. regexp 查询

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

38. fuzzy 查询

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

39. type 查询

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

40. terms_set 查询

含义:术语集查询,查询 field1 的值包含在给定的术语集中的文档。
sh 复制代码
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"
      }
    }
  }
}'
相关推荐
元气满满-樱31 分钟前
MySQL基础管理
android·mysql·adb
老华带你飞32 分钟前
旅游|基于Java旅游信息系统(源码+数据库+文档)
java·开发语言·数据库·vue.js·spring boot·旅游
释怀°Believe36 分钟前
javaweb
数据库·sql·oracle
Clarence Liu38 分钟前
redis学习 (1) 基础入门
数据库·redis·学习
天生励志1231 小时前
Redis 安装部署
数据库·redis·缓存
北半球的夜1 小时前
emoji 表情符号保存问题
数据库·oracle
jason成都1 小时前
elasticsearch部署时创建用户密码
大数据·elasticsearch·jenkins
清风6666661 小时前
基于单片机的智能家居多参数环境监测与联动报警系统设计
数据库·单片机·毕业设计·智能家居·课程设计·期末大作业
煎蛋学姐2 小时前
SSM社区医院儿童预防接种管理系统84ui9(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm 框架·儿童预防接种
锡兰_CC2 小时前
无缝触达,卓越体验:开启openEuler世界的任意门
服务器·网络·数据库·c++·图像处理·qt·nginx