【ElasticSearch】常用查询格式介绍

  1. 查询类型(Query Type):

    • match:全文搜索,会对查询字段进行分词,匹配文档中包含指定词项的文档。
    • match_phrase:短语搜索,会对查询字段进行分词,匹配包含指定短语的文档。
    • term:精确值搜索,用于搜索精确匹配指定词项的文档。
    • terms:多值搜索,用于搜索匹配多个指定词项的文档。
    • bool:布尔查询,用于组合多个查询条件和过滤器。
    • range:范围搜索,用于搜索指定字段在某个范围内的文档。
    • wildcard:通配符搜索,用于搜索符合某个模式的文档。
    • prefix:前缀搜索,用于搜索指定字段以某个前缀开头的文档。
    • fuzzy:模糊搜索,用于搜索指定字段的模糊匹配文档。
    • exists:存在搜索,用于搜索指定字段存在的文档。
    • match_all:匹配所有文档。
    • query_string:使用Lucene查询语法进行搜索。
  2. 查询语法格式:

    • 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”}}
  3. 查询字段(Field):可以指定需要查询的字段,也可以对所有字段进行查询。

    • 对所有字段进行查询:{“query”: “value”}
    • 指定查询字段:{“field”: {“query”: “value”}}
  4. 查询条件(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”}}
  5. 过滤器(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”}}
  6. 排序(Sorting):用于指定查询结果的排序方式,可以按照字段的升序或降序进行排序。

    • 单个字段排序的语法格式:{“field”: {“order”: “asc/desc”}}
    • 多个字段排序的语法格式:[{“field1”: {“order”: “asc/desc”}}, {“field2”: {“order”: “asc/desc”}}]
  7. 分页(Pagination):用于指定返回结果的起始位置和数量。

    • from:指定起始位置,默认为0。
    • size:指定返回结果的数量,默认为10。
  8. 聚合(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
}
 

你可能感兴趣的:(elasticsearch,mybatis,大数据)