-
查询类型(Query Type):
- match:全文搜索,会对查询字段进行分词,匹配文档中包含指定词项的文档。
- match_phrase:短语搜索,会对查询字段进行分词,匹配包含指定短语的文档。
- term:精确值搜索,用于搜索精确匹配指定词项的文档。
- terms:多值搜索,用于搜索匹配多个指定词项的文档。
- bool:布尔查询,用于组合多个查询条件和过滤器。
- range:范围搜索,用于搜索指定字段在某个范围内的文档。
- wildcard:通配符搜索,用于搜索符合某个模式的文档。
- prefix:前缀搜索,用于搜索指定字段以某个前缀开头的文档。
- fuzzy:模糊搜索,用于搜索指定字段的模糊匹配文档。
- exists:存在搜索,用于搜索指定字段存在的文档。
- match_all:匹配所有文档。
- query_string:使用Lucene查询语法进行搜索。
-
查询语法格式:
- match查询的语法格式:{“match”: {“field”: {“query”: “value”, “operator”: “and/or”}}}
- match_phrase查询的语法格式:{“match_phrase”: {“field”: “value”}}
- term查询的语法格式:{“term”: {“field”: “value”}}
- terms查询的语法格式:{“terms”: {“field”: [“value1”, “value2”]}}
- bool查询的语法格式:{“bool”: {“must”: […], “should”: […], “must_not”: […]}}
- range查询的语法格式:{“range”: {“field”: {“gte”: “value”, “lte”: “value”}}}
- wildcard查询的语法格式:{“wildcard”: {“field”: “value”}}
- prefix查询的语法格式:{“prefix”: {“field”: “value”}}
- fuzzy查询的语法格式:{“fuzzy”: {“field”: {“value”: “value”, “fuzziness”: “auto”}}}
- exists查询的语法格式:{“exists”: {“field”: “value”}}
- match_all查询的语法格式:{“match_all”: {}}
- query_string查询的语法格式:{“query_string”: {“query”: “value”}}
-
查询字段(Field):可以指定需要查询的字段,也可以对所有字段进行查询。
- 对所有字段进行查询:{“query”: “value”}
- 指定查询字段:{“field”: {“query”: “value”}}
-
查询条件(Query Condition):根据查询类型和查询字段来指定查询条件。
- match查询条件的语法格式:{“match”: {“field”: {“query”: “value”, “operator”: “and/or”}}}
- match_phrase查询条件的语法格式:{“match_phrase”: {“field”: “value”}}
- term查询条件的语法格式:{“term”: {“field”: “value”}}
- terms查询条件的语法格式:{“terms”: {“field”: [“value1”, “value2”]}}
- bool查询条件的语法格式:{“bool”: {“must”: […], “should”: […], “must_not”: […]}}
- range查询条件的语法格式:{“range”: {“field”: {“gte”: “value”, “lte”: “value”}}}
- wildcard查询条件的语法格式:{“wildcard”: {“field”: “value”}}
- prefix查询条件的语法格式:{“prefix”: {“field”: “value”}}
- fuzzy查询条件的语法格式:{“fuzzy”: {“field”: {“value”: “value”, “fuzziness”: “auto”}}}
- exists查询条件的语法格式:{“exists”: {“field”: “value”}}
- query_string查询条件的语法格式:{“query_string”: {“query”: “value”}}
-
过滤器(Filter):用于对查询结果进行过滤,只返回符合条件的文档。
- term过滤器的语法格式:{“term”: {“field”: “value”}}
- terms过滤器的语法格式:{“terms”: {“field”: [“value1”, “value2”]}}
- range过滤器的语法格式:{“range”: {“field”: {“gte”: “value”, “lte”: “value”}}}
- exists过滤器的语法格式:{“exists”: {“field”: “value”}}
- bool过滤器的语法格式:{“bool”: {“must”: […], “should”: […], “must_not”: […]}}
- match过滤器的语法格式:{“match”: {“field”: “value”}}
-
排序(Sorting):用于指定查询结果的排序方式,可以按照字段的升序或降序进行排序。
- 单个字段排序的语法格式:{“field”: {“order”: “asc/desc”}}
- 多个字段排序的语法格式:[{“field1”: {“order”: “asc/desc”}}, {“field2”: {“order”: “asc/desc”}}]
-
分页(Pagination):用于指定返回结果的起始位置和数量。
- from:指定起始位置,默认为0。
- size:指定返回结果的数量,默认为10。
-
聚合(Aggregation):用于对查询结果进行统计和分析,如求和、平均值、最大值、最小值等。
- 求和聚合的语法格式:{“sum”: {“field”: “value”}}
- 平均值聚合的语法格式:{“avg”: {“field”: “value”}}
- 最大值聚合的语法格式:{“max”: {“field”: “value”}}
- 最小值聚合的语法格式:{“min”: {“field”: “value”}}
- 统计值聚合的语法格式:{“stats”: {“field”: “value”}}
GET /index_name/_search
{
"query": {
"bool" : {
"must" : [
{ "match" : { "field1" : "value1" } },
{ "range" : { "field2" : { "gt" : "value2" } } }
],
"filter" : {
"term" : { "field3" : "value3" }
},
"should" : [
{ "term" : { "field4" : "value4" } },
{ "term" : { "field5" : "value5" } }
],
"minimum_should_match" : 1
}
},
"sort": [
{ "field6": { "order": "asc" } }
],
"from": 0,
"size": 10
}