ElasticSearch 一文读懂

Posted 在奋斗的大道

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ElasticSearch 一文读懂相关的知识,希望对你有一定的参考价值。

目录

1、Elasticsearch 简介

2、Docker 安装 Elasticsearch

2.1 使用Docker安装ElasticSearch7.6.2

2.2Elasticsearch 目录详解

2.3 使用Docker安装elasticSearch--head

通过Chrome 插件安装ElasticSearch-head  

2.4 了解ELK

ELK 功能结构图

Docker 安装Kibana 

3 ElasticSearch 核心概念

3.1索引 index

3.2 映射 mapping

3.3 字段Field

3.4 字段类型 Type

3.5 文档 document

3.6 集群 cluster

3.7 节点 node

3.8 分片和副本 shards&replicas

分片

副本

ElasticSearch 分词原理之倒排索引

 ElasticSearch 集成IK分词

 IK分词效果:

 4、ElasticSearch 数据管理

 4.1 ElasticSearch 基本操作

1) 创建索引

2) 查询索引

3) 删除索引

4) 添加文档

 5) 修改文档

6) 查询文档

 7) 删除文档

 8) 查询操作

  9) 文档批量操作

 5、ElasticSearch之DSL

DSL 思维导图

 DSL 操作

(1)无查询条件

 (2)有查询条件

2.2 组合条件查询(多条件查询)

2.3 连接查询(多文档合并查询)

DSL 检索实例

 6、ElasticSearch 之文档映射

动态映射实操

静态映射实操

核心类型(Core datatype)

静态映射指定text类型的ik分词器

7、Elasticsearch架构原理  

Elasticsearch节点类型

Master节点

DataNode节点

分片和副本机制

分片(Shard)

副本

8、Elasticsearch重点工作流程

Elasticsearch文档写入原理

 Elasticsearch检索原理

 Elasticsearch准实时索引实现

1.溢写到文件系统缓存

2.写translog保障容错

3. flush到磁盘

4. segment合并

9、ElasticSearch 进级

人工控制搜索结果精准度

实现方式二:使用should+bool搜索,控制搜索条件的匹配度。

Boost 权重控制

基于dis_max实现best fields策略进行多字段搜索

基于tie_breaker参数优化dis_max搜索效果

使用multi_match简化dis_max+tie_breaker

cross fields搜索

copy_to fields 搜索

match phrase 搜索

前缀搜索 prefix search

通配符搜索

正则搜索

搜索推荐

fuzzy模糊搜索

 高亮显示

10、ElasticSearch聚合搜索

bucket和metric概念简介

聚合操作案例

根据color分组统计销售数量

统计不同color车辆的平均价格 

统计不同color不同brand中车辆的平均价格

统计不同color中的最大和最小价格、总价

统计不同品牌汽车中价格排名最高的车型

histogram 区间统计

date_histogram区间分组

_global bucket

aggs+order

search+aggs

filter+aggs

聚合中使用filter

11、ElasticSearch 嵌套对象

nested object  嵌套对象

父子关系数据建模

父子关系


1、Elasticsearch 简介

        Elasticsearch是一个基于Lucene库的搜索引擎。它提供了一个分布式、支持多租户的全文搜索引擎,具有HTTP Web接口和无模式JSON文档。Elasticsearch是用Java开发的,并在Apache许可证下作为开源软件发布。官方客户端在Java.NETC#)、PHPPythonApache GroovyRuby和许多其他语言中都是可用的。[5]根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。

2、Docker 安装 Elasticsearch

Elasticsearch 的发展是非常快速的,所以在 ES5.0 之前, ELK 的各个版本都不统一,出现了版本号混乱的状态,所以 从5.0 开始,所有 Elastic Stack 中的项目全部统一版本号。目前最新版本是8.3.2 ,我们将基于这Elasticsearch7.6.2版本进行学习。

2.1 使用Docker安装ElasticSearch7.6.2

# elasticsearch 镜像检索
docker search elasticsearch

# 下载elasticsearch 指定版本7.6.2
docker pull elasticsearch:7.6.2

# 创建elasticsearch 容器挂载目录地址(配置文件、数据和插件)
mkdir -p /usr/local/es/config /usr/local/es/data /usr/local/es/plugins

# 简单运行elasticsearch 容器
docker run -d \\
--name elasticsearch \\
-p 9200:9200 -p 9300:9300 \\
-e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" \\
elasticsearch:7.6.2

# 拷贝elasticsearch 容器中的配置文件
docker cp elasticsearch:/usr/share/elasticsearch/config /usr/local/es
docker cp elasticsearch:/usr/share/elasticsearch/data /usr/local/es
docker cp elasticsearch:/usr/share/elasticsearch/plugins /usr/local/es

# 通过SFTP将下载的IK插件上传至/usr/local/es/plugins 目录下。
[root@localhost plugins]# ls -a
.  ..  elasticsearch-analysis-ik-7.6.2

# 修改jvm 运行参数
[root@localhost plugins]# vim /usr/local/es/config/jvm.options
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space

-Xms64m
-Xmx512m

# 解决跨越配置
[root@localhost plugins]# vim /usr/local/es/config/elasticsearch.yml
添加如下代码片段
http.cors.enabled: true
http.cors.allow-origin: "*"

# 移除简单elasticsearch 容器
[root@localhost plugins]# docker rm -f elasticsearch
elasticsearch

# 再重新启动挂卷elasticsearch 容器实例
[root@localhost config]# docker run -d \\
> --name elasticsearch \\
> -p 9200:9200 -p 9300:9300 \\
> -e "discovery.type=single-node" \\
> -v /usr/local/es/config:/usr/share/elasticsearch/config \\
> -v /usr/local/es/data:/usr/share/elasticsearch/data \\
> -v /usr/local/es/plugins:/usr/share/elasticsearch/plugins \\
> elasticsearch:7.6.2

# 检查elasticsearch 服务是否正常启动
[root@localhost config]# curl http://localhost:9200

  "name" : "0f6f368c4c1d",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "B_p4MWplSiO2cNp3EE9AOg",
  "version" : 
    "number" : "7.6.2",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f",
    "build_date" : "2020-03-26T06:34:37.794943Z",
    "build_snapshot" : false,
    "lucene_version" : "8.4.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  ,
  "tagline" : "You Know, for Search"



MobaXterm 实际操作:

# 查看本地镜像资源
[root@localhost docker]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              0e901e68141f        3 weeks ago         142MB
mysql               5.7                 2a0961b7de03        3 weeks ago         462MB
delron/fastdfs      latest              8487e86fc6ee        4 years ago         464MB

# 检索elasticsearch 镜像资源
[root@localhost docker]# docker search elasticsearch
NAME                                               DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
elasticsearch                                      Elasticsearch is a powerful open source sear…   5665                [OK]
kibana                                             Kibana gives shape to any kind of data — str…   2421                [OK]
bitnami/elasticsearch                              Bitnami Docker Image for Elasticsearch          54                                      [OK]
bitnami/elasticsearch-exporter                     Bitnami Elasticsearch Exporter Docker Image     4                                       [OK]

# 下载elasticsearch 镜像资源指定版本7.6.2
[root@localhost docker]# docker pull elasticsearch:7.6.2
7.6.2: Pulling from library/elasticsearch
ab5ef0e58194: Pull complete
c4d1ca5c8a25: Pull complete
941a3cc8e7b8: Pull complete
43ec483d9618: Pull complete
c486fd200684: Pull complete
1b960df074b2: Pull complete
1719d48d6823: Pull complete
Digest: sha256:1b09dbd93085a1e7bca34830e77d2981521a7210e11f11eda997add1c12711fa
Status: Downloaded newer image for elasticsearch:7.6.2

# 创建elasticsearch 容器挂载宿主主机文件目录创建
[root@localhost docker]# mkdir -p /usr/local/es/config /usr/local/es/data /usr/local/es/plugins
[root@localhost docker]# cd /usr/local/es
[root@localhost es]# ls -al
总用量 0
drwxr-xr-x.  5 root root  47 6月  21 16:29 .
drwxr-xr-x. 16 root root 192 6月  21 16:29 ..
drwxr-xr-x.  2 root root   6 6月  21 16:29 config
drwxr-xr-x.  2 root root   6 6月  21 16:29 data
drwxr-xr-x.  2 root root   6 6月  21 16:29 plugins

# 简单运行elasticsearch 容器,为了拷贝elasticsearch 容器相关配置文件
[root@localhost es]# docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2

# 进入elasticsearch 容器,下载IK 分词插件
[root@localhost es]# docker exec -it elasticsearch /bin/bash
[root@93e38d04a341 elasticsearch]

# 温馨提示:es 从 v5.5.1 版本开始支持自带的 es 插件命令来安装。
[root@93e38d04a341 elasticsearch]#./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v7.6.2/elasticsearch-analysis-ik-7.6.2.zip
-> Installing https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v7.6.2/elasticsearch-analysis-ik-7.6.2.zip
-> Downloading https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v7.6.2/elasticsearch-analysis-ik-7.6.2.zip
-> Failed installing https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v7.6.2/elasticsearch-analysis-ik-7.6.2.zip
-> Rolling back https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v7.6.2/elasticsearch-analysis-ik-7.6.2.zip
-> Rolled back https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v7.6.2/elasticsearch-analysis-ik-7.6.2.zip
Exception in thread "main" java.net.UnknownHostException: github.com
        at java.base/sun.nio.ch.NiosocketImpl.connect(NioSocketImpl.java:567)
        at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:339)
        at java.base/java.net.Socket.connect(Socket.java:603)

无法解析github.com网站,导致elasticsearch-analysis-ik-7.6.2.zip 指定资源无法下载。
解决办法:宿主主机下载elasticsearch-analysis-ik-7.6.2.zip 压缩包,解压压缩包并上传宿主主机的 /usr/local/es/plugins 文件目录下。

# 退出elasticsearch 容器
[root@93e38d04a341 elasticsearch]# exit
exit

# 拷贝elasticsearch 容器配置文件
[root@localhost ~]# docker cp elasticsearch:/usr/share/elasticsearch/config /usr/local/es
[root@localhost ~]# docker cp elasticsearch:/usr/share/elasticsearch/data /usr/local/es
[root@localhost ~]# docker cp elasticsearch:/usr/share/elasticsearch/plugins /usr/local/es

#编辑jvm.option
[root@localhost config]# vim jvm.options
#编辑elasticsearch.yml
[root@localhost config]# vim elasticsearch.yml

#移除简单elasticsearch 容器
[root@localhost plugins]# docker rm -f elasticsearch
elasticsearch

#重新 启动elasticsearch 容器
[root@localhost config]# docker run -d \\
> --name elasticsearch \\
> -p 9200:9200 -p 9300:9300 \\
> -e "discovery.type=single-node" \\
> -v /usr/local/es/config:/usr/share/elasticsearch/config \\
> -v /usr/local/es/data:/usr/share/elasticsearch/data \\
> -v /usr/local/es/plugins:/usr/share/elasticsearch/plugins \\
> elasticsearch:7.6.2
0f6f368c4c1d57046f9476bfe63a436c4ee153a4bc677be774a6b0145cf33881
[root@localhost config]# docker ps
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                                            NAMES
0f6f368c4c1d        elasticsearch:7.6.2   "/usr/local/bin/dock…"   4 seconds ago       Up 3 seconds        0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp   elasticsearch

#验证elasticsearch 服务是否正常
[root@localhost config]# curl http://localhost:9200

  "name" : "0f6f368c4c1d",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "B_p4MWplSiO2cNp3EE9AOg",
  "version" : 
    "number" : "7.6.2",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f",
    "build_date" : "2020-03-26T06:34:37.794943Z",
    "build_snapshot" : false,
    "lucene_version" : "8.4.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  ,
  "tagline" : "You Know, for Search"



2.2Elasticsearch 目录详解

ElasticSearch 官网地址https://www.elastic.co

 

下载ElasticSearch-7.6.2.zip 包,解压至当前文件目录 

 目录文件说明:

bin: 启动命令
config: 配置文件
	log4j2: 日志配置文件
	jvm.options: Java虚拟机 相关配置
         elasticsearch.yml: elasticsearch 配置文件
 lib: 依赖的相关jar包
 log: 日志输出
 modules:功能模块
 plugins: 插件存放位置,如IK

2.3 使用Docker安装elasticSearch--head

由于 ES 官方并没有为 ES 提供界面管理工具,仅仅是提供了后台的服务。 elasticsearch-head 是一个为 ES 开发的一个 页面客户端工具,其源码托管于GitHub ,地址为: https://github.com/mobz/elasticsearch-head head 提供了 4 种安装方式:
  • 源码安装,通过npm run start启动(不推荐)
  • 通过docker安装(推荐)
  • 通过chrome插件安装(推荐)
  • 通过ESplugin方式安装(不推荐)

通过Chrome 插件安装ElasticSearch-head  

 ElasticSearch-Head 插件安装后的效果:

启动ElasticSearch-Head 插件,连接ElasticSearch 服务。

启动ElasticSearch-Head 插件后, 插件默认首页。

点击New 按钮,添加ElasticSearch 服务的IP地址。

 至此,ElasticSearch-Head 插件安装成功,并成功连接ElasticSearch 服务。

ElasticSearch-Head 之Google 插件下载地址:

2.4 了解ELK

        ELK 是ElasticSearch、Logstash、Kibana 三大开源框架首字母。市面上也被称为Elastic Stack。其中ElasticSearch 是一个基于Lucene、分布式、通过Restful方式进行交互的近实时检索平台框架。Logstash 是ELK的中央数据流引擎,用于从不同的目标(文件/数据 存储/MQ)收集不同格式的数据,经过过滤后支持输出到不同的目的地(文件/MQ/Redis/ElasticSearch/KaKa等)。Kibana 可以将ElasticSearch 的数据通过友好的页面展示出来,提供实时分析的功能。

ELK 功能结构图

Docker 安装Kibana 

1、下载Kibana

# 检索Kibana 镜像
docker search kibana

# 下载Kibana 镜像指定版本7.4.1
docker pull kibana:7.4.1

# 查看本地镜像资源
docker images

 2、编辑kibana的配置文件kibana.yml

在宿主主机上 创建/usr/local/kibana/conf 文件目录用于存放kibana.yml 配置文件。

mkdir -p /usr/local/kibana/conf

 编辑kibana.yml 文件内容如下:

# Default Kibana configuration for docker target
server.name: kibana
server.host: "0"
elasticsearch.hosts: [ "http://192.168.43.10:9200" ]
xpack.monitoring.ui.container.elasticsearch.enabled: true

 注意:elasticsearch.hosts为Elasticsearch实例。

 3、运行 Kibana

# Kibana 运行命令
docker run -d --restart=always --log-driver json-file --log-opt max-size=100m --log-opt max-file=2 --name es-kibana -p 5601:5601 -v /usr/local/kibana/conf/kibana.yml:/usr/share/kibana/config/kibana.yml kibana:7.4.1

# 查看容器启动状态
docker ps
4、运行Kibana 效果截图 访问 http://192.168.43.10:5601 (启动可能会较慢,如失败等几秒再尝试刷新一下)

3 ElasticSearch 核心概念

3.1索引 index

一个索引就是一个拥有几分相似特征的文档的集合。比如说,可以有一个客户数据 的索引,另一个产品目录的索引,还有一个订单数据的索引。 一个索引由一个名字来标识(必须全部是小写字母的),并且当我们要对对应于这 个索引中的文档进行索引、搜索、更新和删除的时候,都要使用到这个名字。

3.2 映射 mapping

ElasticSearch中的映射(Mapping)用来定义一个文档。 mapping是处理数据的方式和规则方面做一些限制,如某个字段的数据类型、默认 值、分词器、是否被索引等等,这些都是映射里面可以设置的

3.3 字段Field

相当于是数据表的字段|列

3.4 字段类型 Type

每一个字段都应该有一个对应的类型,例如:Text、Keyword、Byte等

3.5 文档 document

一个文档是一个可被索引的基础信息单元,类似一条记录。文档以JSON( javascript Object Notation)格式来表示;

3.6 集群 cluster

一个集群就是由一个或多个节点组织在一起,它们共同持有整个的数据,并一起提 供索引和搜索功能。

3.7 节点 node

一个节点是集群中的一个服务器,作为集群的一部分,它存储数据,参与集群的索 引和搜索功能         一个节点可以通过配置集群名称的方式来加入一个指定的集群。默认情况下,每 个节点都会被安排加入到一个叫做“elasticsearch”的集群中 这意味着,如果在网络中启动了若干个节点,并假定它们能够相互发现彼此,它们 将会自动地形成并加入到一个叫做“elasticsearch”的集群中         在一个集群里,可以拥有任意多个节点。而且,如果当前网络中没有运行任何 Elasticsearch节点,这时启动一个节点,会默认创建并加入一个叫 做“elasticsearch”的集群

3.8 分片和副本 shards&replicas

分片

  • 一个索引可以存储超出单个结点硬件限制的大量数据。比如,一个具有10 亿文档的索引占据1TB的磁盘空间,而任一节点都没有这样大的磁盘空间;或 者单个节点处理搜索请求,响应太慢。 
  • 为了解决这个问题,Elasticsearch提供了将索引划分成多份的能力,这些 份就叫做分片。
  • 当创建一个索引的时候,可以指定你想要的分片的数量。
  • 每个分片本身也是一个功能完善并且独立的“索引”,这个“索引”可以 被放置到集群中的任何节点上。
  • 分片很重要,主要有两方面的原因 
  •     允许水平分割/扩展你的内容容量 
  •     允许在分片之上进行分布式的、并行的操作,进而提高性能/吞吐量 
  • 至于一个分片怎样分布,它的文档怎样聚合回搜索请求,是完全由 Elasticsearch管理的,对于作为用户来说,这些都是透明的

副本

在一个网络/云的环境里,失败随时都可能发生,在某个分片/节点不知怎 么的就处于离线状态,或者由于任何原因消失了,这种情况下,有一个故障转 移机制是非常有用并且是强烈推荐的。为此目的,Elasticsearch允许你创建分 片的一份或多份拷贝,这些拷贝叫做副本分片,或者直接叫副本 
副本之所以重要,有两个主要原因 
    1) 在分片/节点失败的情况下,提供了高可用性。 注意到复制分片从不与原/主要(original/primary)分片置于同一节点 上是非常重要的 
    2) 扩展搜索量/吞吐量,因为搜索可以在所有的副本上并行运行 
        每个索引可以被分成多个分片。一个索引有0个或者多个副本。
        一旦设置了副本,每个索引就有了主分片和副本分片,分片和副本的数 量可以在索引创建的时候指定 
                   在索引创建之后,可以在任何时候动态地改变副本的数量,但是不能改变 分片的数量

ElasticSearch 分词原理之倒排索引

 ElasticSearch 集成IK分词

# 首先官网下载elasticsearch-analysis-ik-7.6.2 分词
官网地址:https://github.com/medcl/elasticsearch-analysis-ik/releases

# 将elasticsearch-analysis-ik-7.6.2 解压文件目录,通过ftp/sftps上传至es plugin挂载卷地址
/usr/local/es/plugins

[root@localhost plugins]# pwd
/usr/local/es/plugins
[root@localhost plugins]# ls -al
总用量 0
drwxr-xr-x. 3 root root  45 6月  21 17:09 .
drwxr-xr-x. 5 root root  47 6月  21 16:29 ..
drwxr-xr-x. 3 root root 243 6月  21 17:09 elasticsearch-analysis-ik-7.6.2


# 重新启动elasticSearch 容器
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                                            NAMES
0f6f368c4c1d        elasticsearch:7.6.2   "/usr/local/bin/dock…"   40 hours ago        Up 40 hours         0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp   elasticsearch
[root@localhost ~]# docker restart 0f6f368
0f6f368

 IK分词效果:

 4、ElasticSearch 数据管理

ES是面向文档(document oriented)的 ,这意味着它可以存储整个对象或文档 (document)。 然而它不仅仅是存储,还会使用索引(index)每个文档的内容使之可以被搜索。 在ES中,你可以对文档(而非成行成列的数据)进行索引、搜索、排序、过滤。 ES使用 JSON 作为文档序列化格式。 JSON现在已经被大多语言所支持,而且已经成为NoSQL领域的标准格式。 ES存储的一个员工文档的格式示例:


	"email": "zhouzhiwengang@163.com",
	"name": "周志文",
	"age": 30,
	"interests": ["厨艺", "阅读"]

 4.1 ElasticSearch 基本操作

1) 创建索引

语法格式: PUT /索引名称 举例 : PUT / es_db

2) 查询索引

语法格式: GET /索引名称 举例 : GET / es_db

3) 删除索引

语法格式: DELETE /索引名称 1 举例 : DELETE / es_db

4) 添加文档

语法格式: PUT /索引名称/类型/id
PUT http://192.168.43.10:9200/es_db/_doc/1

	"email": "zhouzhiwen@163.com",
	"name": "周志文",
	"age": 30,
	"interests": ["厨艺", "阅读"]


PUT http://192.168.43.10:9200/es_db/_doc/2

	"email": "zhouzhiwenxiong@163.com",
	"name": "周志雄",
	"age": 30,
	"interests": ["游戏"]


PUT http://192.168.43.10:9200/es_db/_doc/3

	"email": "zhouzhiwengang@163.com",
	"name": "周志刚",
	"age": 30,
	"interests": ["登山","美食"]

 5) 修改文档

格式 : PUT / 索引名称 / 类型 / id
PUT http://192.168.43.10:9200/es_db/_doc/3


	"email": "zhouzhiwengang@163.com",
	"name": "周志刚修改",
	"age": 29,
	"interests": ["编程","美食"]

6) 查询文档

格式 : GET / 索引名称 / 类型 / id
GET http://192.168.43.10:9200/es_db/_doc/3

 7) 删除文档

格式 : DELETE / 索引名称 / 类型 / id
DELETE http://192.168.43.10:9200/es_db/_doc/3

 8) 查询操作

8.1 查询当前类型中的所有文档 _search

格式 : GET / 索引名称 / 类型 / _search
GET http://192.168.43.10:9200/es_db/_doc/_search

8.2 条件查询, 如要查询age等于30岁的 _search?q=*:***

格式 : GET / 索引名称 / 类型 / _search ? q =* : ***

GET http://192.168.43.10:9200/es_db/_doc/_search?q=age:30

8.3 范围查询, 如要查询age在25至26岁之间的 _search?q=***[** TO **] 注意: TO 必须为大写

格式 : GET / 索引名称 / 类型 / _search ? q =*** [ 25 TO 26 ]

8.4 根据多个ID进行批量查询 _mget 格式 :  POST   / 索引名称 / 类型 / _mget
POST http://192.168.43.10:9200/es_db/_doc/_mget


	"ids": [1, 2]

 8.5 查询年龄小于等于28岁的 :<=

格式 : GET / 索引名称 / 类型 / _search ? q = age : <=**
GET http://192.168.43.10:9200/es_db/_doc/_search?q=age:<=28

8.6 查询年龄大于28前的 :>=

格式 : GET / 索引名称 / 类型 / _search ? q = age : >=**
GET http://192.168.43.10:9200/es_db/_doc/_search?q=age:>=28
8.7 分页查询 from=*&size=* 格式 : GET / 索引名称 / 类型 / _search ?q=age:>=28& from = 0 & size = 1
GET http://192.168.43.10:9200/es_db/_doc/_search?q=age:>=28&from=0&size=1

8.8 对查询结果只输出某些字段 _source=字段,字段

格式 : GET / 索引名称 / 类型 / _search ? _source = 字段 , 字段
GET http://192.168.43.10:9200/es_db/_doc/_search?_source=name

8.9 对查询结果排序 sort=字段:desc/asc

格式 : GET / 索引名称 / 类型 / _search ? sort = 字段: desc
http://192.168.43.10:9200/es_db/_doc/_search?sort=age:desc

  9) 文档批量操作

 多个文档是指,批量操作多个文档。

9.1 批量获取文档数据

说明:批量获取文档数据是通过_mget的API来实现的 。

格式: POST /索引名称/类型/_mget

POST http://192.168.43.10:9200/es_db/_doc/_mget


	"ids":[1, 2]

9.2  批量操作文档数据

说明:批量对文档进行写操作是通过_bulk的API来实现的。 格式:    POST  / _bulk

以上是关于ElasticSearch 一文读懂的主要内容,如果未能解决你的问题,请参考以下文章

一文读懂Python 高阶函数

一文读懂什么是机器学习--1. 机器学习是什么?

一文读懂神经网络

一文读懂容器存储接口 CSI

一文读懂Filecoin挖矿,告别繁杂的文章介绍!

一文读懂简单查询代价估算