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

ElasticSearch Elasticsearch扫盲之七:ElasticSearch的搜索_search的基本用法及分页和排序参数说明

ElasticSearch的_search主要是针对各种搜索条件获取搜索结果的API.

一、主要用法

  • 请求方式:GET
  • 请求地址:
    • 不指定index : search
    • 指定index : /{{indexName}}/_search
    • 指定index和type : {{indexName}}/{{typeName}}/_search
  • 请求参数:
    • 通过URL传参数(Query String)
    • 通过请求体传参数

ElasticSearch Elasticsearch扫盲之六:ElasticSearch文档操作之单个文档、多个文档即_mget批量文档获取和_bulk批量文档操作

ElasticSearch中的文档表示一条记录,类似于MySQL中的一行记录

一、单个文档

1.创建文档
  • 请求类型:PUT
  • 请求地址:{{indexName}}/{{typeName}}/{{id}}
  • 参数:文档数据对象
  1. PUT user/_doc/5
  2. {
  3. "user_id":5,
  4. "account":"frank",
  5. "email":"frank@gmail.com",
  6. "status":1,

ElasticSearch Elasticsearch扫盲之五:ElasticSearch中mapping字段的数据类型详解

在ElasticSearch中,字段有以下类型,主要分为简单类型和复合类型

一、简单类型

1.字符串
  • text : 文本,将会被分词
  • keyword : 有固定格式的文本,不会被分词(当作一个整体)

注:text类型一般用于全文索引,它将会被拆成多个关键词,与文档ID形成倒排索引,因此,在定义为text时,如果需要索引它,有必要指定它的分词器,特定是对于中文的文本

  1. {
  2. "user_id":"1001

ElasticSearch Elasticsearch扫盲之四: ElasticSearch的index的Settings配置参数详解

ElasticSearch索引配置settings的配置项可分为以下几种类型:

一、静态配置项

所谓静态配置项就是在创建index时指定,创建后不能再修改

1.分片相关的配置
配置项 功能 备选值 默认值 其他说明
index.number_of_shards 当前index拥有的主分片数 5 最大为1024
index.shard.check_on_startup 在启动时是否检