目录
1. Match Query
2. Term Query
3. Range Query
4. Bool Query
5. Exists Query
6. Prefix Query
7. Wildcard Query
8. Regexp Query
9. Terms Query
10. Nested Query
11. Geo Distance Query
12. Script Query
13. Fuzzy Query
14. Ids Query
15. More Like This Query
在Elasticsearch中,条件查询(也称为过滤查询)用于筛选文档。以下是一些常用的查询字段和查询类型:
1. Match Query
-
用途: 用于全文搜索,匹配指定字段中的文本。
-
示例:
{ "query": { "match": { "field_name": "search_text" } } }
2. Term Query
-
用途: 用于精确匹配指定字段中的值,通常用于关键字字段(keyword)。
-
示例:
{ "query": { "term": { "field_name": { "value": "exact_value" } } } }
3. Range Query
-
用途: 用于匹配指定字段中的值在某个范围内的文档。
-
示例:
{ "query": { "range": { "field_name": { "gte": 10, "lte": 20 } } } }
4. Bool Query
-
用途: 用于组合多个查询条件,支持
must
、should
、must_not
和filter
。 -
示例:
{ "query": { "bool": { "must": [ { "match": { "field1": "value1" } }, { "range": { "field2": { "gte": 10 } } } ], "should": [ { "term": { "field3": "value3" } } ], "must_not": [ { "term": { "field4": "value4" } } ] } } }
5. Exists Query
-
用途: 用于匹配指定字段存在的文档。
-
示例:
{ "query": { "exists": { "field": "field_name" } } }
6. Prefix Query
-
用途: 用于匹配指定字段中以特定前缀开头的文档。
-
示例:
{ "query": { "prefix": { "field_name": { "value": "prefix_text" } } } }
7. Wildcard Query
-
用途: 用于匹配指定字段中符合通配符模式的文档。
-
示例:
{ "query": { "wildcard": { "field_name": { "value": "wild*card" } } } }
8. Regexp Query
-
用途: 用于匹配指定字段中符合正则表达式的文档。
-
示例:
{ "query": { "regexp": { "field_name": { "value": "regex_pattern" } } } }
9. Terms Query
-
用途: 用于匹配指定字段中包含多个值中的任意一个的文档。
-
示例:
{ "query": { "terms": { "field_name": ["value1", "value2", "value3"] } } }
10. Nested Query
-
用途: 用于查询嵌套对象中的字段。
-
示例:
{ "query": { "nested": { "path": "nested_field", "query": { "match": { "nested_field.sub_field": "value" } } } } }
11. Geo Distance Query
-
用途: 用于查询地理位置字段,匹配距离某个点一定范围内的文档。
-
示例:
{ "query": { "geo_distance": { "distance": "10km", "field_name": { "lat": 40.73, "lon": -74.1 } } } }
12. Script Query
-
用途: 使用脚本进行复杂的条件查询。
-
示例:
{ "query": { "script": { "script": { "source": "doc['field_name'].value > params.value", "params": { "value": 10 } } } } }
13. Fuzzy Query
-
用途: 用于模糊匹配指定字段中的值。
-
示例:
{ "query": { "fuzzy": { "field_name": { "value": "text", "fuzziness": "AUTO" } } } }
14. Ids Query
-
用途: 用于根据文档ID查询文档。
-
示例:
{ "query": { "ids": { "values": ["1", "2", "3"] } } }
15. More Like This Query
-
用途: 用于查找与指定文档相似的文档。
-
示例:
{ "query": { "more_like_this": { "fields": ["field1", "field2"], "like": [ { "_index": "index_name", "_id": "1" } ] } } }