ElasticSearch ElasticSearch扫盲之十二:ElasticSearch关联查询即父子文档查询和嵌套文档nested查询

注:ElasticSearch系列文章适用于ElasticSearch 6.7,部分内容适用于ElasticSearch7.0

在关系型数据库中,可以通过join实现多表的联表查询,那么在ES中,是否能实现多个index联合查询呢?显然,是不能的,那么如何实现多个index联合查询呢?根据本人的一些微薄经验,大体可以通过以下几个方便来实现:

  • 定义一个组合的index,将多个index的值合并到一

ElasticSearch ElasticSearch扫盲之十一:ElasticSearch结构化查询语句Query DSL之组合查询即bool查询

组合条件查询是基于叶子查询条件,将叶子条件作为子条件,形成一个多字段多条件的组合条件.

一、bool条件

1.功能及参数
  • 功能:通过多个叶子条件形成一个bool条件树
  • 参数:
    • must : 必须满足指定的条件(各子条件是AND关系)
    • filter : 指定必须满足的条件(不统计相关度评分)
    • should : 满足一个子条件即可(各子条件是OR关系)
    • must_not : 不满足条件(NOT)

must/f

ElasticSearch ElasticSearch扫盲之十:ElasticSearch结构化查询语句Query DSL之精确匹配即term查询和范围查询

精确匹配是相对于模糊匹配而言的,一般适用于非字符串类型的字段,如数字型,日期型等

一、条件与目标字段相等

1.term
  • 功能:查找目标字段与条件相等的记录
  • 用法:
  1. term:{"fieldName":"value"}

如:查找状态为正常即status为1的用户列表:

  1. GET user/_doc/_search
  2. {
  3. "_source":["user_id","status"],
  4. "query":{

ElasticSearch 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.叶子条