ElasticSearch扫盲之八:ElasticSearch结构化查询语句Query DSL使用

ElasticSearch查询语句查询条件主要是通过query参数来传递的,而query参数是一种使用JSON来表示搜索条件的一种特殊语句,今天我们来揭开它神秘的面纱。

ElasticSearch的查询语句DSL

一、无查询条件

无查询条件是查询所有,默认是查询所有的,或者使用match_all表示所有

  1. GET /user/_doc/_search
  2. {
  3. "query":{
  4. "match_all":{}
  5. }
  6. }

二、有查询条件

1.叶子条件查询(单字段查询条件)
(1)模糊匹配

模糊匹配主要是针对文本类型的字段,文本类型的字段会对内容进行分词,对查询时,也会对搜索条件进行分词,然后通过倒排索引查找到匹配的数据,模糊匹配主要通过match等参数来实现

  • match : 通过match关键词模糊匹配条件内容
  • prefix : 前缀匹配
  • regexp : 通过正则表达式来匹配数据

更多内容请移步: ElasticSearch查询语句DSL之模糊匹配查询

(2)精确匹配
  • term : 单个条件相等
  • terms : 单个字段属于某个值数组内的值
  • range : 字段属于某个范围内的值
  • exists : 某个字段的值是否存在
  • ids : 通过ID批量查询

更多内容请移步: ElasticSearch查询语句DSL之精确匹配查询

2.组合条件查询(多条件查询)

组合条件查询是将叶子条件查询语句进行组合而形成的一个完整的查询条件

  • bool : 各条件之间有and,or或not的关系
    • must : 各个条件都必须满足,即各条件是and的关系
    • should : 各个条件有一个满足即可,即各条件是or的关系
    • must_not : 不满足所有条件,即各条件是not的关系
    • filter : 不计算相关度评分
  • constant_score : 不计算相关度评分

更多内容请移步: ElasticSearch查询语句DSL之组合条件查询

3.连接查询(多文档合并查询)
  • 父子文档查询:parent/child
  • 嵌套文档查询: nested

更多内容请移步: ElasticSearch查询语句DSL之连接查询查询

三、聚合运算

聚合不是查询相关的记录,而是将记录作为基础,进行相应的运算得到聚合的值

更多内容请移步: ElasticSearch聚合运算