保姆级讲解 Elasticsearch服务搭建配置与管理

54分钟前 133阅读

文章目录

      • Elasticsearch详细笔记
      • 一、Elasticsearch概述
        • 1.1 开篇
        • 1.2 技术选型
        • 1.3 Elasticsearch 应用案例
        • 1.4 -教学大纲
        • 二、Elasticsearch入门
          • 2.1 [官方网址](https://www.elastic.co/cn/)
          • 2.2 RESTful & JSON
          • 2.3 Postman客户端工具
          • 2.4 倒排索引
          • 2.5 HTTP-索引-创建
          • 2.6 HTTP-索引-查询&删除
          • 2.7 查看单个索引
          • 2.8 删除索引
          • 2.8-1 查看所有索引
          • 2.9 HTTP-文档-创建(PUT&POST)
          • 2.10 HTTP-查询-主键 查询 & 全查询
          • 2.11 HTTP-全量修改 & 局部修改 & 删除
            • 2.11.1 全量修改
            • 2.11.2 局部修改
            • 2.11.3 删除
            • 2.12 HTTP-条件查询 & 分页查询 & 查询排序
              • 2.12.1 条件查询
              • 2.12.2 URL带参查询
              • 2.12.3 请求体带参查询
              • 2.12.4 带请求体方式的查找所有内容
              • 2.12.5 查询指定字段
              • 2.12.6 分页查询
              • 2.12.6 查询排序
              • 2.13 HTTP-多条件查询 & 范围查询
                • 2.13.1 多条件查询
                • 2.13.2 范围查询
                • 2.14 HTTP-全文检索 & 完全匹配 & 高亮查询
                  • 2.14.1 全文检索
                  • 2.14.2 完全匹配
                  • 2.13.2 高亮查询
                  • 2.15 HTTP-聚合查询
                  • 2.16 HTTP-映射关系
                  • 三、JavaAPI-环境准备
                  • 3.1 JavaAPI-索引-创建
                  • 3.2 JavaAPI-索引-查询 & 删除
                    • 3.2.1 查询
                    • 3.2.2 删除
                    • 3.3 JavaAPI-文档-新增 & 修改
                      • 3.3.1 重构
                      • 3.3.2 新增
                      • 3.3.3 修改
                      • 3.4 JavaAPI-文档-查询 & 删除
                        • 3.4.1 查询
                        • 3.4.2 删除
                        • 3.5 JavaAPI-文档-批量新增 & 批量删除
                          • 3.5.1 批量新增
                          • 3.5.2 批量删除
                          • 3.6 JavaAPI-文档-高级查询-全量查询
                          • 3.7 JavaAPI-文档-高级查询-分页查询 & 条件查询 & 查询排序
                            • 3.7.1 条件查询
                            • 3.7.2 分页查询
                            • 3.7.3 查询排序
                            • 3.8 JavaAPI-文档-高级查询-组合查询 & 范围查询
                              • 3.8.1 组合查询
                              • 3.8.2 范围查询
                              • 3.9 JavaAPI-文档-高级查询-模糊查询 & 高亮查询
                                • 3.9.1 模糊查询
                                • 3.9.2 高亮查询
                                • 3.10 JavaAPI-文档-高级查询-最大值查询 & 分组查询
                                  • 3.10.1 最大值查询
                                  • 3.10.2 分组查询
                                  • 四、Elasticsearch环境
                                    • 4.1 -环境-简介
                                    • 4.2 -环境-Windows集群部署
                                      • 4.2.1 部署集群
                                      • 4.3 启动集群
                                      • 4.4 测试集群
                                      • 五、环境-Linux单节点部署
                                        • 5.1 软件安装
                                        • 5.2 启动软件
                                        • 5.3 测试软件
                                        • 六、环境-Linux集群部署
                                          • 6.1 软件安装
                                          • 6.2 启动软件
                                          • 6.3 测试集群
                                          • 七、Elasticsearch进阶
                                            • 7.1 进阶-核心概念
                                            • 7.2 索引Index
                                            • 7.3 类型Type
                                            • 7.4 文档Document
                                            • 7.5 字段Field
                                            • 7.6 分片Shards
                                            • 7.7 副本Replicas
                                            • 7.8 Allocation
                                            • 八、进阶-系统架构-简介
                                              • 8.1 进阶-单节点集群
                                              • 8.2 elasticsearch-head chrome插件安装
                                              • 8.3 进阶-故障转移
                                              • 8.4 进阶-水平扩容
                                              • 8.4 进阶-应对故障
                                              • 8.5 进阶-路由计算 & 分片控制
                                                • 8.5.1 路由计算
                                                • 8.5.2 分片控制
                                                • 8.6 进阶-数据写流程
                                                • 8.6 进阶-数据读流程
                                                • 8.7 进阶-更新流程 & 批量操作流程
                                                  • 8.7.1 更新流程
                                                  • 8.7.2 批量操作流程
                                                  • 8.8 进阶-倒排序
                                                    • 8.8.1 倒排索引原理
                                                    • 8.8.2 倒排索引的例子
                                                    • 8.9 进阶-文档搜索
                                                      • 8.9.1 不可改变的倒排索引
                                                      • 8.9.2 动态更新索引
                                                      • 8.10 进阶-文档刷新 & 文档刷写 & 文档合并
                                                        • 8.10.1 近实时搜索
                                                        • 8.10.2 持久化变更
                                                        • 8.10.3 段合并
                                                        • 8.11 进阶-文档分析
                                                          • 8.11.1 内置分析器
                                                          • 8.11.2 分析器使用场景
                                                          • 8.11.3 测试分析器
                                                          • 8.11.4 指定分析器
                                                          • 8.11.5 IK分词器
                                                          • 8.11.6 自定义分析器
                                                          • 8.11.7 字符过滤器
                                                          • 8.11.8 分词器
                                                          • 8.11.9 词单元过滤器
                                                          • 8.11.10 自定义分析器例子
                                                          • 8.12 进阶-文档展示-Kibana
                                                          • 九、Elasticsearch集成
                                                            • 9.1 Spring Data Elasticsearch 介绍
                                                            • 9.2 框架集成-SpringData-代码功能集成
                                                            • 9.3 框架集成-SpringData-集成测试-索引操作
                                                            • 9.3 框架集成-SpringData-集成测试-文档操作
                                                            • 9.4 框架集成-SpringData-集成测试-文档搜索
                                                            • 9.5 框架集成-SparkStreaming-集成
                                                            • 9.6 框架集成-Flink-集成
                                                            • 十、Elasticsearch优化
                                                              • 10.1 优化-硬件选择
                                                              • 10.2 优化-分片策略
                                                                • 10.2.1 合理设置分片数
                                                                • 10.2.2 推迟分片分配
                                                                • 10.3 优化-路由选择
                                                                  • 10.3.1 不带routing查询
                                                                  • 10.3.2 带routing查询
                                                                  • 10.4 优化-写入速度优化
                                                                    • 10.4.1 优化存储设备
                                                                    • 10.4.2 合理使用合并
                                                                    • 10.4.3 减少 Refresh 的次数
                                                                    • 10.4.4 加大 Flush 设置
                                                                    • 10.4.5 减少副本的数量
                                                                    • 10.5 优化-内存设置
                                                                    • 10.6 优化-重要配置
                                                                    • 十一、Elasticsearch面试题
                                                                      • 11.1 为什么要使用 Elasticsearch?
                                                                      • 11.2 Elasticsearch 的 master 选举流程?
                                                                      • 11.3 Elasticsearch 集群脑裂问题?
                                                                      • 11.4 Elasticsearch 索引文档的流程?
                                                                      • 11.5 Elasticsearch 更新和删除文档的流程?
                                                                      • 11.6 Elasticsearch 搜索的流程?
                                                                      • 11.7 Elasticsearch 在部署时,对 Linux 的设置有哪些优化方法?
                                                                      • 11.8 GC 方面,在使用 Elasticsearch 时要注意什么?
                                                                      • 11.9 Elasticsearch 对于大数据量(上亿量级)的聚合如何实现?
                                                                      • 11.10 在并发情况下, Elasticsearch 如果保证读写一致?
                                                                      • 11.11 如何监控 Elasticsearch 集群状态?
                                                                      • 11.12 是否了解字典树?
                                                                      • 11.13 Elasticsearch 中的集群、节点、索引、文档、类型是什么?
                                                                      • 11.14 Elasticsearch 中的倒排索引是什么?

                                                                        Elasticsearch详细笔记

                                                                        一、Elasticsearch概述

                                                                        1.1 开篇

                                                                        结构化数据

                                                                        保姆级讲解 Elasticsearch服务搭建配置与管理

                                                                        非结构化数据

                                                                        保姆级讲解 Elasticsearch服务搭建配置与管理

                                                                        半结构化数据

                                                                        保姆级讲解 Elasticsearch服务搭建配置与管理

                                                                        1.2 技术选型

                                                                        Elasticsearch 是什么

                                                                        The Elastic Stack, 包括 Elasticsearch、 Kibana、 Beats 和 Logstash(也称为 ELK Stack)。能够安全可靠地获取任何来源、任何格式的数据,然后实时地对数据进行搜索、分析和可视化。

                                                                        Elaticsearch,简称为 ES, ES 是一个开源的高扩展的分布式全文搜索引擎, 是整个 ElasticStack 技术栈的核心。

                                                                        它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理 PB 级别的数据。

                                                                        全文搜索引擎

                                                                        Google,百度类的网站搜索,它们都是根据网页中的关键字生成索引,我们在搜索的时候输入关键字,它们会将该关键字即索引匹配到的所有网页返回;还有常见的项目中应用日志的搜索等等。对于这些非结构化的数据文本,关系型数据库搜索不是能很好的支持。

                                                                        一般传统数据库,全文检索都实现的很鸡肋,因为一般也没人用数据库存文本字段。进行全文检索需要扫描整个表,如果数据量大的话即使对 SQL 的语法优化,也收效甚微。建立了索引,但是维护起来也很麻烦,对于 insert 和 update 操作都会重新构建索引。

                                                                        基于以上原因可以分析得出,在一些生产环境中,使用常规的搜索方式,性能是非常差的:

                                                                        • 搜索的数据对象是大量的非结构化的文本数据。

                                                                        • 文件记录量达到数十万或数百万个甚至更多。

                                                                        • 支持大量基于交互式文本的查询。

                                                                        • 需求非常灵活的全文搜索查询。

                                                                        • 对高度相关的搜索结果的有特殊需求,但是没有可用的关系数据库可以满足。

                                                                        • 对不同记录类型、非文本数据操作或安全事务处理的需求相对较少的情况。为了解决结构化数据搜索和非结构化数据搜索性能问题,我们就需要专业,健壮,强大的全文搜索引擎 。

                                                                          这里说到的全文搜索引擎指的是目前广泛应用的主流搜索引擎。它的工作原理是计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。这个过程类似于通过字典中的检索字表查字的过程。

                                                                          1.3 Elasticsearch 应用案例
                                                                          • GitHub: 2013 年初,抛弃了 Solr,采取 Elasticsearch 来做 PB 级的搜索。 “GitHub 使用Elasticsearch 搜索 20TB 的数据,包括 13 亿文件和 1300 亿行代码”。

                                                                          • 维基百科:启动以 Elasticsearch 为基础的核心搜索架构

                                                                          • 百度:目前广泛使用 Elasticsearch 作为文本数据分析,采集百度所有服务器上的各类指标数据及用户自定义数据,通过对各种数据进行多维分析展示,辅助定位分析实例异常或业务层面异常。目前覆盖百度内部 20 多个业务线(包括云分析、网盟、预测、文库、直达号、钱包、 风控等),单集群最大 100 台机器, 200 个 ES 节点,每天导入 30TB+数据。

                                                                          • 新浪:使用 Elasticsearch 分析处理 32 亿条实时日志。

                                                                          • 阿里:使用 Elasticsearch 构建日志采集和分析体系。

                                                                          • Stack Overflow:解决 Bug 问题的网站,全英文,编程人员交流的网站。

                                                                            1.4 -教学大纲
                                                                            • 第1章 Elasticsearch概述

                                                                            • 第2章 Elasticsearch入门

                                                                            • 第3章 Elasticsearch环境

                                                                            • 第4章 Elasticsearch进阶

                                                                            • 第5章 Elasticsearch集成

                                                                            • 第6章 Elasticsearch优化

                                                                            • 第7章 Elasticsearch面试题

                                                                              二、Elasticsearch入门

                                                                              2.1 官方网址

                                                                              官方文档

                                                                              Elasticsearch 7.8.0下载页面

                                                                              Windows 版的 Elasticsearch 压缩包,解压即安装完毕,解压后的 Elasticsearch 的目录结构如下 :

                                                                              保姆级讲解 Elasticsearch服务搭建配置与管理

                                                                              解压后,进入 bin 文件目录,点击 elasticsearch.bat 文件启动 ES 服务 。

                                                                              注意: 9300 端口为 Elasticsearch 集群间组件的通信端口, 9200 端口为浏览器访问的 http协议 RESTful 端口。

                                                                              打开浏览器,输入地址: http://localhost:9200,测试返回结果,返回结果如下:

                                                                              {
                                                                                "name" : "192.local",
                                                                                "cluster_name" : "elasticsearch",
                                                                                "cluster_uuid" : "hEnwz9zORIifwL6HovF2fA",
                                                                                "version" : {
                                                                                  "number" : "7.17.5",
                                                                                  "build_flavor" : "default",
                                                                                  "build_type" : "tar",
                                                                                  "build_hash" : "8d61b4f7ddf931f219e3745f295ed2bbc50c8e84",
                                                                                  "build_date" : "2022-06-23T21:57:28.736740635Z",
                                                                                  "build_snapshot" : false,
                                                                                  "lucene_version" : "8.11.1",
                                                                                  "minimum_wire_compatibility_version" : "6.8.0",
                                                                                  "minimum_index_compatibility_version" : "6.0.0-beta1"
                                                                                },
                                                                                "tagline" : "You Know, for Search"
                                                                              }
                                                                              
                                                                              2.2 RESTful & JSON

                                                                              REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。 Web 应用程序最重要的 REST 原则是,客户端和服务器之间的交互在请求之间是无状态的。从客户端到服务器的每个请求都必须包含理解请求所必需的信息。如果服务器在请求之间的任何时间点重启,客户端不会得到通知。此外,无状态请求可以由任何可用服务器回答,这十分适合云计算之类的环境。客户端可以缓存数据以改进性能。

                                                                              在服务器端,应用程序状态和功能可以分为各种资源。资源是一个有趣的概念实体,它向客户端公开。资源的例子有:应用程序对象、数据库记录、算法等等。每个资源都使用 URI(Universal Resource Identifier) 得到一个唯一的地址。所有资源都共享统一的接口,以便在客户端和服务器之间传输状态。使用的是标准的 HTTP 方法,比如 GET、 PUT、 POST 和DELETE。

                                                                              在 REST 样式的 Web 服务中,每个资源都有一个地址。资源本身都是方法调用的目

                                                                              标,方法列表对所有资源都是一样的。这些方法都是标准方法,包括 HTTP GET、 POST、PUT、 DELETE,还可能包括 HEAD 和 OPTIONS。简单的理解就是,如果想要访问互联网上的资源,就必须向资源所在的服务器发出请求,请求体中必须包含资源的网络路径, 以及对资源进行的操作(增删改查)。

                                                                              REST 样式的 Web 服务若有返回结果,大多数以JSON字符串形式返回。

                                                                              2.3 Postman客户端工具

                                                                              如果直接通过浏览器向 Elasticsearch 服务器发请求,那么需要在发送的请求中包含

                                                                              HTTP 标准的方法,而 HTTP 的大部分特性且仅支持 GET 和 POST 方法。所以为了能方便地进行客户端的访问,可以使用 Postman 软件Postman 是一款强大的网页调试工具,提供功能强大的 Web API 和 HTTP 请求调试。

                                                                              软件功能强大,界面简洁明晰、操作方便快捷,设计得很人性化。 Postman 中文版能够发送任何类型的 HTTP 请求 (GET, HEAD, POST, PUT…),不仅能够表单提交,且可以附带任意类型请求体。

                                                                              2.4 倒排索引

                                                                              保姆级讲解 Elasticsearch服务搭建配置与管理

                                                                              Elasticsearch 是面向文档型数据库,一条数据在这里就是一个文档。 为了方便大家理解,我们将 Elasticsearch 里存储文档数据和关系型数据库 MySQL 存储数据的概念进行一个类比

                                                                              ES 里的 Index 可以看做一个库,而 Types 相当于表, Documents 则相当于表的行。这里 Types 的概念已经被逐渐弱化, Elasticsearch 6.X 中,一个 index 下已经只能包含一个type, Elasticsearch 7.X 中, Type 的概念已经被删除了。

                                                                              2.5 HTTP-索引-创建

                                                                              对比关系型数据库,创建索引就等同于创建数据库。

                                                                              在 Postman 中,向 ES 服务器发 PUT 请求 : http://127.0.0.1:9200/shopping

                                                                              请求后,服务器返回响应:

                                                                              {
                                                                                  "acknowledged": true,
                                                                                  "shards_acknowledged": true,
                                                                                  "index": "shopping"
                                                                              }
                                                                              

                                                                              后台日志:

                                                                              [2022-08-10T15:47:07,160][INFO ][o.e.c.m.MetadataCreateIndexService] [192.local] [shopping] creating index, cause [api], templates [], shards [1]/[1]
                                                                              

                                                                              如果重复发 PUT 请求 : http://127.0.0.1:9200/shopping 添加索引,会返回错误信息 :

                                                                              {
                                                                                  "error": {
                                                                                      "root_cause": [
                                                                                          {
                                                                                              "type": "resource_already_exists_exception",
                                                                                              "reason": "index [shopping/J0WlEhh4R7aDrfIc3AkwWQ] already exists",
                                                                                              "index_uuid": "J0WlEhh4R7aDrfIc3AkwWQ",
                                                                                              "index": "shopping"
                                                                                          }
                                                                                      ],
                                                                                      "type": "resource_already_exists_exception",
                                                                                      "reason": "index [shopping/J0WlEhh4R7aDrfIc3AkwWQ] already exists",
                                                                                      "index_uuid": "J0WlEhh4R7aDrfIc3AkwWQ",
                                                                                      "index": "shopping"
                                                                                  },
                                                                                  "status": 400
                                                                              }
                                                                              
                                                                              2.6 HTTP-索引-查询&删除

                                                                              查看所有索引

                                                                              在 Postman 中,向 ES 服务器发 GET 请求 : http://127.0.0.1:9200/_cat/indices?v

                                                                              这里请求路径中的_cat 表示查看的意思, indices 表示索引,所以整体含义就是查看当前 ES服务器中的所有索引,就好像 MySQL 中的 show tables 的感觉,服务器响应结果如下 :

                                                                              health status index            uuid                   pri rep docs.count docs.deleted store.size pri.store.size
                                                                              green  open   .geoip_databases MByvMPJcRC6q1xFiYisslQ   1   0         40            0     37.9mb         37.9mb
                                                                              yellow open   shopping         dxKLUaNBSXeKPRROyeFlsg   1   1          0            0       226b           226b
                                                                              

                                                                              保姆级讲解 Elasticsearch服务搭建配置与管理

                                                                              2.7 查看单个索引

                                                                              在postman中,向es服务器发送get请求:http://127.0.0.1:9200/shopping

                                                                              返回结果如下:

                                                                              {
                                                                                  "shopping": {
                                                                                      "aliases": {},
                                                                                      "mappings": {},
                                                                                      "settings": {
                                                                                          "index": {
                                                                                              "routing": {
                                                                                                  "allocation": {
                                                                                                      "include": {
                                                                                                          "_tier_preference": "data_content"
                                                                                                      }
                                                                                                  }
                                                                                              },
                                                                                              "number_of_shards": "1",
                                                                                              "provided_name": "shopping",
                                                                                              "creation_date": "1660117627142",
                                                                                              "number_of_replicas": "1",
                                                                                              "uuid": "dxKLUaNBSXeKPRROyeFlsg",
                                                                                              "version": {
                                                                                                  "created": "7170599"
                                                                                              }
                                                                                          }
                                                                                      }
                                                                                  }
                                                                              }
                                                                              
                                                                              2.8 删除索引

                                                                              在postman中,向 ES 服务器发 DELETE 请求: http://127.0.0.1:9200/shopping

                                                                              返回结果如下:

                                                                              {
                                                                                  "acknowledged": true
                                                                              }
                                                                              
                                                                              2.8-1 查看所有索引

                                                                              再次查看所有索引,GET http://127.0.0.1:9200/_cat/indices?v,返回结果如下:

                                                                              GET http://127.0.0.1:9200/_cat/indices?v
                                                                              

                                                                              返回结果如下:

                                                                              health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
                                                                              

                                                                              成功删除。

                                                                              2.9 HTTP-文档-创建(PUT&POST)

                                                                              假设索引已经创建好了,接下来我们来创建文档,并添加数据。这里的文档可以类比为关系型数据库中的表数据,添加的数据格式为 JSON 格式

                                                                              在 Postman 中,向 ES 服务器发 POST 请求 : http://127.0.0.1:9200/shopping/_doc,请求体JSON内容为:

                                                                              {
                                                                                  "title":"小米手机",
                                                                                  "category":"小米",
                                                                                  "images":"http://www.gulixueyuan.com/xm.jpg",
                                                                                  "price":3999.00
                                                                              }
                                                                              

                                                                              注意,此处发送请求的方式必须为 POST,不能是 PUT,否则会发生错误 。

                                                                              返回结果:

                                                                              {
                                                                                  "_index": "shopping",
                                                                                  "_type": "_doc",
                                                                                  "_id": "_XPLhoIBg3C-pJdYUv6X",
                                                                                  "_version": 1,
                                                                                  "result": "created",
                                                                                  "_shards": {
                                                                                      "total": 2,
                                                                                      "successful": 1,
                                                                                      "failed": 0
                                                                                  },
                                                                                  "_seq_no": 0,
                                                                                  "_primary_term": 1
                                                                              }
                                                                              

                                                                              上面的数据创建后,由于没有指定数据唯一性标识(ID),默认情况下, ES 服务器会随机生成一个。

                                                                              如果想要自定义唯一性标识,需要在创建时指定: http://127.0.0.1:9200/shopping/_doc/1,请求体JSON内容为:

                                                                              {
                                                                                  "title":"小米手机",
                                                                                  "category":"小米",
                                                                                  "images":"http://www.gulixueyuan.com/xm.jpg",
                                                                                  "price":3999.00
                                                                              }
                                                                              

                                                                              返回结果如下:

                                                                              {
                                                                                  "_index": "shopping",
                                                                                  "_type": "_doc",
                                                                                  "_id": "1",
                                                                                  "_version": 1,
                                                                                  "result": "created",
                                                                                  "_shards": {
                                                                                      "total": 2,
                                                                                      "successful": 1,
                                                                                      "failed": 0
                                                                                  },
                                                                                  "_seq_no": 1,
                                                                                  "_primary_term": 1
                                                                              }
                                                                              

                                                                              此处需要注意:如果增加数据时明确数据主键,那么请求方式也可以为 PUT。

                                                                              2.10 HTTP-查询-主键 查询 & 全查询

                                                                              查看文档时,需要指明文档的唯一性标识,类似于 MySQL 中数据的主键查询

                                                                              在 Postman 中,向 ES 服务器发 GET 请求 : http://127.0.0.1:9200/shopping/_doc/1 。

                                                                              返回结果如下:

                                                                              {
                                                                                  "_index": "shopping",
                                                                                  "_type": "_doc",
                                                                                  "_id": "1",
                                                                                  "_version": 1,
                                                                                  "_seq_no": 1,
                                                                                  "_primary_term": 1,
                                                                                  "found": true,
                                                                                  "_source": {
                                                                                      "title": "小米手机",
                                                                                      "category": "小米",
                                                                                      "images": "http://www.gulixueyuan.com/xm.jpg",
                                                                                      "price": 3999
                                                                                  }
                                                                              }
                                                                              

                                                                              查找不存在的内容,向 ES 服务器发 GET 请求 : http://127.0.0.1:9200/shopping/_doc/1001。

                                                                              返回结果如下:

                                                                              {
                                                                                  "_index": "shopping",
                                                                                  "_type": "_doc",
                                                                                  "_id": "1001",
                                                                                  "found": false
                                                                              }
                                                                              

                                                                              查看索引下所有数据,向 ES 服务器发 GET 请求 : http://127.0.0.1:9200/shopping/_search。

                                                                              返回结果如下:

                                                                              {
                                                                                  "took": 726,
                                                                                  "timed_out": false,
                                                                                  "_shards": {
                                                                                      "total": 1,
                                                                                      "successful": 1,
                                                                                      "skipped": 0,
                                                                                      "failed": 0
                                                                                  },
                                                                                  "hits": {
                                                                                      "total": {
                                                                                          "value": 2,
                                                                                          "relation": "eq"
                                                                                      },
                                                                                      "max_score": 1.0,
                                                                                      "hits": [
                                                                                          {
                                                                                              "_index": "shopping",
                                                                                              "_type": "_doc",
                                                                                              "_id": "_XPLhoIBg3C-pJdYUv6X",
                                                                                              "_score": 1.0,
                                                                                              "_source": {
                                                                                                  "title": "小米手机",
                                                                                                  "category": "小米",
                                                                                                  "images": "http://www.gulixueyuan.com/xm.jpg",
                                                                                                  "price": 3999.00
                                                                                              }
                                                                                          },
                                                                                          {
                                                                                              "_index": "shopping",
                                                                                              "_type": "_doc",
                                                                                              "_id": "1",
                                                                                              "_score": 1.0,
                                                                                              "_source": {
                                                                                                  "title": "小米手机",
                                                                                                  "category": "小米",
                                                                                                  "images": "http://www.gulixueyuan.com/xm.jpg",
                                                                                                  "price": 3999.00
                                                                                              }
                                                                                          }
                                                                                      ]
                                                                                  }
                                                                              }
                                                                              
                                                                              2.11 HTTP-全量修改 & 局部修改 & 删除
                                                                              2.11.1 全量修改

                                                                              和新增文档一样,输入相同的 URL 地址请求,如果请求体变化,会将原有的数据内容覆盖

                                                                              在 Postman 中,向 ES 服务器发 POST 请求 : http://127.0.0.1:9200/shopping/_doc/1

                                                                              请求体JSON内容为:

                                                                              {
                                                                                  "title":"华为手机",
                                                                                  "category":"华为",
                                                                                  "images":"http://www.gulixueyuan.com/hw.jpg",
                                                                                  "price":1999.00
                                                                              }
                                                                              

                                                                              修改成功后,服务器相应结果:

                                                                              {
                                                                                  "_index": "shopping",
                                                                                  "_type": "_doc",
                                                                                  "_id": "1",
                                                                                  "_version": 3,
                                                                                  "result": "updated",
                                                                                  "_shards": {
                                                                                      "total": 2,
                                                                                      "successful": 1,
                                                                                      "failed": 0
                                                                                  },
                                                                                  "_seq_no": 3,
                                                                                  "_primary_term": 1
                                                                              }
                                                                              
                                                                              2.11.2 局部修改

                                                                              修改数据时,也可以只修改某一给条数据的局部信息

                                                                              在 Postman 中,向 ES 服务器发 POST 请求 : http://127.0.0.1:9200/shopping/_update/1。

                                                                              请求体JSON内容为:

                                                                              {
                                                                              	"doc": {
                                                                              		"title":"小米手机",
                                                                              		"category":"小米"
                                                                              	}
                                                                              }
                                                                              

                                                                              返回结果如下:

                                                                              {
                                                                                  "_index": "shopping",
                                                                                  "_type": "_doc",
                                                                                  "_id": "1",
                                                                                  "_version": 4,
                                                                                  "_seq_no": 4,
                                                                                  "_primary_term": 1,
                                                                                  "found": true,
                                                                                  "_source": {
                                                                                      "title": "xaiomi手机",
                                                                                      "category": "小米",
                                                                                      "images": "http://www.gulixueyuan.com/hw.jpg",
                                                                                      "price": 1999.00
                                                                                  }
                                                                              }
                                                                              
                                                                              2.11.3 删除

                                                                              删除一个文档不会立即从磁盘上移除,它只是被标记成已删除(逻辑删除)。

                                                                              在 Postman 中,向 ES 服务器发 DELETE 请求 : http://127.0.0.1:9200/shopping/_doc/1

                                                                              返回结果:

                                                                              {
                                                                                  "_index": "shopping",
                                                                                  "_type": "_doc",
                                                                                  "_id": "1",
                                                                                  "_version": 5,
                                                                                  "result": "deleted",
                                                                                  "_shards": {
                                                                                      "total": 2,
                                                                                      "successful": 1,
                                                                                      "failed": 0
                                                                                  },
                                                                                  "_seq_no": 5,
                                                                                  "_primary_term": 1
                                                                              }
                                                                              

                                                                              在 Postman 中,向 ES 服务器发 GET请求 : http://127.0.0.1:9200/shopping/_doc/1,查看是否删除成功:

                                                                              {
                                                                                  "_index": "shopping",
                                                                                  "_type": "_doc",
                                                                                  "_id": "1",
                                                                                  "found": false
                                                                              }
                                                                              
                                                                              2.12 HTTP-条件查询 & 分页查询 & 查询排序
                                                                              2.12.1 条件查询

                                                                              假设有以下文档内容,(在 Postman 中,向 ES 服务器发 GET请求 : http://127.0.0.1:9200/shopping/_search):

                                                                              {
                                                                                  "took": 5,
                                                                                  "timed_out": false,
                                                                                  "_shards": {
                                                                                      "total": 1,
                                                                                      "successful": 1,
                                                                                      "skipped": 0,
                                                                                      "failed": 0
                                                                                  },
                                                                                  "hits": {
                                                                                      "total": {
                                                                                          "value": 6,
                                                                                          "relation": "eq"
                                                                                      },
                                                                                      "max_score": 1,
                                                                                      "hits": [
                                                                                          {
                                                                                              "_index": "shopping",
                                                                                              "_type": "_doc",
                                                                                              "_id": "ANQqsHgBaKNfVnMbhZYU",
                                                                                              "_score": 1,
                                                                                              "_source": {
                                                                                                  "title": "小米手机",
                                                                                                  "category": "小米",
                                                                                                  "images": "http://www.gulixueyuan.com/xm.jpg",
                                                                                                  "price": 3999
                                                                                              }
                                                                                          },
                                                                                          {
                                                                                              "_index": "shopping",
                                                                                              "_type": "_doc",
                                                                                              "_id": "A9R5sHgBaKNfVnMb25Ya",
                                                                                              "_score": 1,
                                                                                              "_source": {
                                                                                                  "title": "小米手机",
                                                                                                  "category": "小米",
                                                                                                  "images": "http://www.gulixueyuan.com/xm.jpg",
                                                                                                  "price": 1999
                                                                                              }
                                                                                          },
                                                                                          {
                                                                                              "_index": "shopping",
                                                                                              "_type": "_doc",
                                                                                              "_id": "BNR5sHgBaKNfVnMb7pal",
                                                                                              "_score": 1,
                                                                                              "_source": {
                                                                                                  "title": "小米手机",
                                                                                                  "category": "小米",
                                                                                                  "images": "http://www.gulixueyuan.com/xm.jpg",
                                                                                                  "price": 1999
                                                                                              }
                                                                                          },
                                                                                          {
                                                                                              "_index": "shopping",
                                                                                              "_type": "_doc",
                                                                                              "_id": "BtR6sHgBaKNfVnMbX5Y5",
                                                                                              "_score": 1,
                                                                                              "_source": {
                                                                                                  "title": "华为手机",
                                                                                                  "category": "华为",
                                                                                                  "images": "http://www.gulixueyuan.com/xm.jpg",
                                                                                                  "price": 1999
                                                                                              }
                                                                                          },
                                                                                          {
                                                                                              "_index": "shopping",
                                                                                              "_type": "_doc",
                                                                                              "_id": "B9R6sHgBaKNfVnMbZpZ6",
                                                                                              "_score": 1,
                                                                                              "_source": {
                                                                                                  "title": "华为手机",
                                                                                                  "category": "华为",
                                                                                                  "images": "http://www.gulixueyuan.com/xm.jpg",
                                                                                                  "price": 1999
                                                                                              }
                                                                                          },
                                                                                          {
                                                                                              "_index": "shopping",
                                                                                              "_type": "_doc",
                                                                                              "_id": "CdR7sHgBaKNfVnMbsJb9",
                                                                                              "_score": 1,
                                                                                              "_source": {
                                                                                                  "title": "华为手机",
                                                                                                  "category": "华为",
                                                                                                  "images": "http://www.gulixueyuan.com/xm.jpg",
                                                                                                  "price": 1999
                                                                                              }
                                                                                          }
                                                                                      ]
                                                                                  }
                                                                              }
                                                                              
                                                                              2.12.2 URL带参查询

                                                                              查找category为小米的文档,在 Postman 中,向 ES 服务器发 GET请求 : http://127.0.0.1:9200/shopping/_search?q=category:小米,返回结果如下:

                                                                              {
                                                                                  "took": 33,
                                                                                  "timed_out": false,
                                                                                  "_shards": {
                                                                                      "total": 1,
                                                                                      "successful": 1,
                                                                                      "skipped": 0,
                                                                                      "failed": 0
                                                                                  },
                                                                                  "hits": {
                                                                                      "total": {
                                                                                          "value": 1,
                                                                                          "relation": "eq"
                                                                                      },
                                                                                      "max_score": 0.5753642,
                                                                                      "hits": [
                                                                                          {
                                                                                              "_index": "shopping",
                                                                                              "_type": "_doc",
                                                                                              "_id": "_XPLhoIBg3C-pJdYUv6X",
                                                                                              "_score": 0.5753642,
                                                                                              "_source": {
                                                                                                  "title": "小米手机",
                                                                                                  "category": "小米",
                                                                                                  "images": "http://www.gulixueyuan.com/xm.jpg",
                                                                                                  "price": 3999.00
                                                                                              }
                                                                                          }
                                                                                      ]
                                                                                  }
                                                                              }
                                                                              

                                                                              上述为URL带参数形式查询,这很容易让不善者心怀恶意,或者参数值出现中文会出现乱码情况。为了避免这些情况,我们可用使用带JSON请求体请求进行查询。

                                                                              2.12.3 请求体带参查询

                                                                              接下带JSON请求体,还是查找category为小米的文档,在 Postman 中,向 ES 服务器发 GET请求 : http://127.0.0.1:9200/shopping/_search,附带JSON体如下

                                                                              {
                                                                              	"query":{
                                                                              		"match":{
                                                                              			"category":"小米"
                                                                              		}
                                                                              	}
                                                                              }
                                                                              

                                                                              返回结果如下:

                                                                              {
                                                                                  "took": 3,
                                                                                  "timed_out": false,
                                                                                  "_shards": {
                                                                                      "total": 1,
                                                                                      "successful": 1,
                                                                                      "skipped": 0,
                                                                                      "failed": 0
                                                                                  },
                                                                                  "hits": {
                                                                                      "total": {
                                                                                          "value": 2,
                                                                                          "relation": "eq"
                                                                                      },
                                                                                      "max_score": 0.9400072,
                                                                                      "hits": [
                                                                                          {
                                                                                              "_index": "shopping",
                                                                                              "_type": "_doc",
                                                                                              "_id": "_XPLhoIBg3C-pJdYUv6X",
                                                                                              "_score": 0.9400072,
                                                                                              "_source": {
                                                                                                  "title": "小米手机",
                                                                                                  "category": "小米",
                                                                                                  "images": "http://www.gulixueyuan.com/xm.jpg",
                                                                                                  "price": 3999.00
                                                                                              }
                                                                                          },
                                                                                          {
                                                                                              "_index": "shopping",
                                                                                              "_type": "_doc",
                                                                                              "_id": "3",
                                                                                              "_score": 0.9400072,
                                                                                              "_source": {
                                                                                                  "title": "xiaomi手机",
                                                                                                  "category": "小米",
                                                                                                  "images": "http://www.xiaomi.com/xm.jpg",
                                                                                                  "price": 6999.00
                                                                                              }
                                                                                          }
                                                                                      ]
                                                                                  }
                                                                              }
                                                                              
                                                                              2.12.4 带请求体方式的查找所有内容

                                                                              查找所有文档内容,也可以这样,在 Postman 中,向 ES 服务器发 GET请求 : http://127.0.0.1:9200/shopping/_search,附带JSON体如下:

                                                                              {
                                                                              	"query":{
                                                                              		"match_all":{}
                                                                              	}
                                                                              }
                                                                              

                                                                              则返回所有文档内容:

                                                                              {
                                                                                  "took": 2,
                                                                                  "timed_out": false,
                                                                                  "_shards": {
                                                                                      "total": 1,
                                                                                      "successful": 1,
                                                                                      "skipped": 0,
                                                                                      "failed": 0
                                                                                  },
                                                                                  "hits": {
                                                                                      "total": {
                                                                                          "value": 3,
                                                                                          "relation": "eq"
                                                                                      },
                                                                                      "max_score": 1.0,
                                                                                      "hits": [
                                                                                          {
                                                                                              "_index": "shopping",
                                                                                              "_type": "_doc",
                                                                                              "_id": "_XPLhoIBg3C-pJdYUv6X",
                                                                                              "_score": 1.0,
                                                                                              "_source": {
                                                                                                  "title": "小米手机",
                                                                                                  "category": "小米",
                                                                                                  "images": "http://www.gulixueyuan.com/xm.jpg",
                                                                                                  "price": 3999.00
                                                                                              }
                                                                                          },
                                                                                          {
                                                                                              "_index": "shopping",
                                                                                              "_type": "_doc",
                                                                                              "_id": "2",
                                                                                              "_score": 1.0,
                                                                                              "_source": {
                                                                                                  "title": "华为手机",
                                                                                                  "category": "华为",
                                                                                                  "images": "http://www.gulixueyuan.com/xm.jpg",
                                                                                                  "price": 4999.00
                                                                                              }
                                                                                          },
                                                                                          {
                                                                                              "_index": "shopping",
                                                                                              "_type": "_doc",
                                                                                              "_id": "3",
                                                                                              "_score": 1.0,
                                                                                              "_source": {
                                                                                                  "title": "xiaomi手机",
                                                                                                  "category": "小米",
                                                                                                  "images": "http://www.xiaomi.com/xm.jpg",
                                                                                                  "price": 6999.00
                                                                                              }
                                                                                          }
                                                                                      ]
                                                                                  }
                                                                              }
                                                                              
                                                                              2.12.5 查询指定字段

                                                                              如果你想查询指定字段,在 Postman 中,向 ES 服务器发 GET请求 : http://127.0.0.1:9200/shopping/_search,附带JSON体如下:

                                                                              {
                                                                              	"query":{
                                                                              		"match_all":{}
                                                                              	},
                                                                              	"_source":["title"]
                                                                              }
                                                                              

                                                                              返回结果如下:

                                                                              {
                                                                                  "took": 3,
                                                                                  "timed_out": false,
                                                                                  "_shards": {
                                                                                      "total": 1,
                                                                                      "successful": 1,
                                                                                      "skipped": 0,
                                                                                      "failed": 0
                                                                                  },
                                                                                  "hits": {
                                                                                      "total": {
                                                                                          "value": 3,
                                                                                          "relation": "eq"
                                                                                      },
                                                                                      "max_score": 1.0,
                                                                                      "hits": [
                                                                                          {
                                                                                              "_index": "shopping",
                                                                                              "_type": "_doc",
                                                                                              "_id": "_XPLhoIBg3C-pJdYUv6X",
                                                                                              "_score": 1.0,
                                                                                              "_source": {
                                                                                                  "title": "小米手机"
                                                                                              }
                                                                                          },
                                                                                          {
                                                                                              "_index": "shopping",
                                                                                              "_type": "_doc",
                                                                                              "_id": "2",
                                                                                              "_score": 1.0,
                                                                                              "_source": {
                                                                                                  "title": "华为手机"
                                                                                              }
                                                                                          },
                                                                                          {
                                                                                              "_index": "shopping",
                                                                                              "_type": "_doc",
                                                                                              "_id": "3",
                                                                                              "_score": 1.0,
                                                                                              "_source": {
                                                                                                  "title": "xiaomi手机"
                                                                                              }
                                                                                          }
                                                                                      ]
                                                                                  }
                                                                              }
                                                                              
                                                                              2.12.6 分页查询

                                                                              在 Postman 中,向 ES 服务器发 GET请求 : http://127.0.0.1:9200/shopping/_search,附带JSON体如下:

                                                                              {
                                                                              	"query":{
                                                                              		"match_all":{}
                                                                              	},
                                                                              	"from":0,
                                                                              	"size":2
                                                                              }
                                                                              

                                                                              返回结果如下:

                                                                              {
                                                                                  "took": 2,
                                                                                  "timed_out": false,
                                                                                  "_shards": {
                                                                                      "total": 1,
                                                                                      "successful": 1,
                                                                                      "skipped": 0,
                                                                                      "failed": 0
                                                                                  },
                                                                                  "hits": {
                                                                                      "total": {
                                                                                          "value": 3,
                                                                                          "relation": "eq"
                                                                                      },
                                                                                      "max_score": 1.0,
                                                                                      "hits": [
                                                                                          {
                                                                                              "_index": "shopping",
                                                                                              "_type": "_doc",
                                                                                              "_id": "_XPLhoIBg3C-pJdYUv6X",
                                                                                              "_score": 1.0,
                                                                                              "_source": {
                                                                                                  "title": "小米手机",
                                                                                                  "category": "小米",
                                                                                                  "images": "http://www.gulixueyuan.com/xm.jpg",
                                                                                                  "price": 3999.00
                                                                                              }
                                                                                          },
                                                                                          {
                                                                                              "_index": "shopping",
                                                                                              "_type": "_doc",
                                                                                              "_id": "2",
                                                                                              "_score": 1.0,
                                                                                              "_source": {
                                                                                                  "title": "华为手机",
                                                                                                  "category": "华为",
                                                                                                  "images": "http://www.gulixueyuan.com/xm.jpg",
                                                                                                  "price": 4999.00
                                                                                              }
                                                                                          }
                                                                                      ]
                                                                                  }
                                                                              }
                                                                              
                                                                              2.12.6 查询排序

                                                                              如果你想通过排序查出价格最高的手机,在 Postman 中,向 ES 服务器发 GET请求 : http://127.0.0.1:9200/shopping/_search,附带JSON体如下:

                                                                              {
                                                                              	"query":{
                                                                              		"match_all":{}
                                                                              	},
                                                                              	"sort":{
                                                                              		"price":{
                                                                              			"order":"desc"
                                                                              		}
                                                                              	}
                                                                              }
                                                                              

                                                                              返回结果如下:

                                                                              {
                                                                                  "took": 30,
                                                                                  "timed_out": false,
                                                                                  "_shards": {
                                                                                      "total": 1,
                                                                                      "successful": 1,
                                                                                      "skipped": 0,
                                                                                      "failed": 0
                                                                                  },
                                                                                  "hits": {
                                                                                      "total": {
                                                                                          "value": 3,
                                                                                          "relation": "eq"
                                                                                      },
                                                                                      "max_score": null,
                                                                                      "hits": [
                                                                                          {
                                                                                              "_index": "shopping",
                                                                                              "_type": "_doc",
                                                                                              "_id": "3",
                                                                                              "_score": null,
                                                                                              "_source": {
                                                                                                  "title": "xiaomi手机",
                                                                                                  "category": "小米",
                                                                                                  "images": "http://www.xiaomi.com/xm.jpg",
                                                                                                  "price": 6999.00
                                                                                              },
                                                                                              "sort": [
                                                                                                  6999.0
                                                                                              ]
                                                                                          },
                                                                                          {
                                                                                              "_index": "shopping",
                                                                                              "_type": "_doc",
                                                                                              "_id": "2",
                                                                                              "_score": null,
                                                                                              "_source": {
                                                                                                  "title": "华为手机",
                                                                                                  "category": "华为",
                                                                                                  "images": "http://www.gulixueyuan.com/xm.jpg",
                                                                                                  "price": 4999.00
                                                                                              },
                                                                                              "sort": [
                                                                                                  4999.0
                                                                                              ]
                                                                                          },
                                                                                          {
                                                                                              "_index": "shopping",
                                                                                              "_type": "_doc",
                                                                                              "_id": "_XPLhoIBg3C-pJdYUv6X",
                                                                                              "_score": null,
                                                                                              "_source": {
                                                                                                  "title": "小米手机",
                                                                                                  "category": "小米",
                                                                                                  "images": "http://www.gulixueyuan.com/xm.jpg",
                                                                                                  "price": 3999.00
                                                                                              },
                                                                                              "sort": [
                                                                                                  3999.0
                                                                                              ]
                                                                                          }
                                                                                      ]
                                                                                  }
                                                                              }
                                                                              
                                                                              2.13 HTTP-多条件查询 & 范围查询
                                                                              2.13.1 多条件查询

                                                                              假设想找出小米牌子,价格为3999元的。(must相当于数据库的&&)

                                                                              在 Postman 中,向 ES 服务器发 GET请求 : http://127.0.0.1:9200/shopping/_search,附带JSON体如下:

                                                                              {
                                                                              	"query":{
                                                                              		"bool":{
                                                                              			"must":[{
                                                                              				"match":{
                                                                              					"category":"小米"
                                                                              				}
                                                                              			},{
                                                                              				"match":{
                                                                              					"price":3999.00
                                                                              				}
                                                                              			}]
                                                                              		}
                                                                              	}
                                                                              }
                                                                              

                                                                              返回结果如下:

                                                                              {
                                                                                  "took": 19,
                                                                                  "timed_out": false,
                                                                                  "_shards": {
                                                                                      "total": 1,
                                                                                      "successful": 1,
                                                                                      "skipped": 0,
                                                                                      "failed": 0
                                                                                  },
                                                                                  "hits": {
                                                                                      "total": {
                                                                                          "value": 1,
                                                                                          "relation": "eq"
                                                                                      },
                                                                                      "max_score": 1.9400072,
                                                                                      "hits": [
                                                                                          {
                                                                                              "_index": "shopping",
                                                                                              "_type": "_doc",
                                                                                              "_id": "_XPLhoIBg3C-pJdYUv6X",
                                                                                              "_score": 1.9400072,
                                                                                              "_source": {
                                                                                                  "title": "小米手机",
                                                                                                  "category": "小米",
                                                                                                  "images": "http://www.gulixueyuan.com/xm.jpg",
                                                                                                  "price": 3999.00
                                                                                              }
                                                                                          }
                                                                                      ]
                                                                                  }
                                                                              }
                                                                              

                                                                              假设想找出小米和华为的牌子。(should相当于数据库的||)

                                                                              在 Postman 中,向 ES 服务器发 GET请求 : http://127.0.0.1:9200/shopping/_search,附带JSON体如下:

                                                                              {
                                                                              	"query": {
                                                                              		"bool": {
                                                                              			"should": [{
                                                                              				"match": {
                                                                              					"category": "小米"
                                                                              				}
                                                                              			}, {
                                                                              				"match": {
                                                                              					"category": "华为"
                                                                              				}
                                                                              			}],
                                                                              			"filter": {
                                                                              				"range": {
                                                                              					"price": {
                                                                              						"gt": 4000
                                                                              					}
                                                                              				}
                                                                              			}
                                                                              		}
                                                                              	}
                                                                              }
                                                                              

                                                                              返回结果:

                                                                              {
                                                                                  "took": 3,
                                                                                  "timed_out": false,
                                                                                  "_shards": {
                                                                                      "total": 1,
                                                                                      "successful": 1,
                                                                                      "skipped": 0,
                                                                                      "failed": 0
                                                                                  },
                                                                                  "hits": {
                                                                                      "total": {
                                                                                          "value": 2,
                                                                                          "relation": "eq"
                                                                                      },
                                                                                      "max_score": 1.9616582,
                                                                                      "hits": [
                                                                                          {
                                                                                              "_index": "shopping",
                                                                                              "_type": "_doc",
                                                                                              "_id": "2",
                                                                                              "_score": 1.9616582,
                                                                                              "_source": {
                                                                                                  "title": "华为手机",
                                                                                                  "category": "华为",
                                                                                                  "images": "http://www.gulixueyuan.com/xm.jpg",
                                                                                                  "price": 4999.00
                                                                                              }
                                                                                          },
                                                                                          {
                                                                                              "_index": "shopping",
                                                                                              "_type": "_doc",
                                                                                              "_id": "3",
                                                                                              "_score": 0.9400072,
                                                                                              "_source": {
                                                                                                  "title": "xiaomi手机",
                                                                                                  "category": "小米",
                                                                                                  "images": "http://www.xiaomi.com/xm.jpg",
                                                                                                  "price": 6999.00
                                                                                              }
                                                                                          }
                                                                                      ]
                                                                                  }
                                                                              }
                                                                              
                                                                              2.13.2 范围查询

                                                                              假设想找出小米和华为的牌子,价格大于2000元的手机。

                                                                              在 Postman 中,向 ES 服务器发 GET请求 : http://127.0.0.1:9200/shopping/_search,附带JSON体如下:

                                                                              {
                                                                              	"query":{
                                                                              		"bool":{
                                                                              			"should":[{
                                                                              				"match":{
                                                                              					"category":"小米"
                                                                              				}
                                                                              			},{
                                                                              				"match":{
                                                                              					"category":"华为"
                                                                              				}
                                                                              			}],
                                                                                          "filter":{
                                                                                          	"range":{
                                                                                              	"price":{
                                                                                                  	"gt":2000
                                                                                              	}
                                                                              	            }
                                                                                  	    }
                                                                              		}
                                                                              	}
                                                                              }
                                                                              

                                                                              返回结果如下:

                                                                              {
                                                                                  "took": 8,
                                                                                  "timed_out": false,
                                                                                  "_shards": {
                                                                                      "total": 1,
                                                                                      "successful": 1,
                                                                                      "skipped": 0,
                                                                                      "failed": 0
                                                                                  },
                                                                                  "hits": {
                                                                                      "total": {
                                                                                          "value": 3,
                                                                                          "relation": "eq"
                                                                                      },
                                                                                      "max_score": 1.9616582,
                                                                                      "hits": [
                                                                                          {
                                                                                              "_index": "shopping",
                                                                                              "_type": "_doc",
                                                                                              "_id": "2",
                                                                                              "_score": 1.9616582,
                                                                                              "_source": {
                                                                                                  "title": "华为手机",
                                                                                                  "category": "华为",
                                                                                                  "images": "http://www.gulixueyuan.com/xm.jpg",
                                                                                                  "price": 4999.00
                                                                                              }
                                                                                          },
                                                                                          {
                                                                                              "_index": "shopping",
                                                                                              "_type": "_doc",
                                                                                              "_id": "_XPLhoIBg3C-pJdYUv6X",
                                                                                              "_score": 0.9400072,
                                                                                              "_source": {
                                                                                                  "title": "小米手机",
                                                                                                  "category": "小米",
                                                                                                  "images": "http://www.gulixueyuan.com/xm.jpg",
                                                                                                  "price": 3999.00
                                                                                              }
                                                                                          },
                                                                                          {
                                                                                              "_index": "shopping",
                                                                                              "_type": "_doc",
                                                                                              "_id": "3",
                                                                                              "_score": 0.9400072,
                                                                                              "_source": {
                                                                                                  "title": "xiaomi手机",
                                                                                                  "category": "小米",
                                                                                                  "images": "http://www.xiaomi.com/xm.jpg",
                                                                                                  "price": 6999.00
                                                                                              }
                                                                                          }
                                                                                      ]
                                                                                  }
                                                                              }
                                                                              
                                                                              2.14 HTTP-全文检索 & 完全匹配 & 高亮查询
                                                                              2.14.1 全文检索

                                                                              这功能像搜索引擎那样,如品牌输入“小华”,返回结果带回品牌有“小米”和华为的。

                                                                              在 Postman 中,向 ES 服务器发 GET请求 : http://127.0.0.1:9200/shopping/_search,附带JSON体如下:

                                                                              {
                                                                              	"query":{
                                                                              		"match":{
                                                                              			"category" : "小华"
                                                                              		}
                                                                              	}
                                                                              }
                                                                              

                                                                              返回结果如下:

                                                                              {
                                                                                  "took": 3,
                                                                                  "timed_out": false,
                                                                                  "_shards": {
                                                                                      "total": 1,
                                                                                      "successful": 1,
                                                                                      "skipped": 0,
                                                                                      "failed": 0
                                                                                  },
                                                                                  "hits": {
                                                                                      "total": {
                                                                                          "value": 3,
                                                                                          "relation": "eq"
                                                                                      },
                                                                                      "max_score": 0.9808291,
                                                                                      "hits": [
                                                                                          {
                                                                                              "_index": "shopping",
                                                                                              "_type": "_doc",
                                                                                              "_id": "2",
                                                                                              "_score": 0.9808291,
                                                                                              "_source": {
                                                                                                  "title": "华为手机",
                                                                                                  "category": "华为",
                                                                                                  "images": "http://www.gulixueyuan.com/xm.jpg",
                                                                                                  "price": 4999.00
                                                                                              }
                                                                                          },
                                                                                          {
                                                                                              "_index": "shopping",
                                                                                              "_type": "_doc",
                                                                                              "_id": "_XPLhoIBg3C-pJdYUv6X",
                                                                                              "_score": 0.4700036,
                                                                                              "_source": {
                                                                                                  "title": "小米手机",
                                                                                                  "category": "小米",
                                                                                                  "images": "http://www.gulixueyuan.com/xm.jpg",
                                                                                                  "price": 3999.00
                                                                                              }
                                                                                          },
                                                                                          {
                                                                                              "_index": "shopping",
                                                                                              "_type": "_doc",
                                                                                              "_id": "3",
                                                                                              "_score": 0.4700036,
                                                                                              "_source": {
                                                                                                  "title": "xiaomi手机",
                                                                                                  "category": "小米",
                                                                                                  "images": "http://www.xiaomi.com/xm.jpg",
                                                                                                  "price": 6999.00
                                                                                              }
                                                                                          }
                                                                                      ]
                                                                                  }
                                                                              }
                                                                              
                                                                              2.14.2 完全匹配

                                                                              在 Postman 中,向 ES 服务器发 GET请求 : http://127.0.0.1:9200/shopping/_search,附带JSON体如下:

                                                                              {
                                                                              	"query":{
                                                                              		"match_phrase":{
                                                                              			"category" : "为"
                                                                              		}
                                                                              	}
                                                                              }
                                                                              

                                                                              返回结果如下:

                                                                              {
                                                                                  "took": 2,
                                                                                  "timed_out": false,
                                                                                  "_shards": {
                                                                                      "total": 1,
                                                                                      "successful": 1,
                                                                                      "skipped": 0,
                                                                                      "failed": 0
                                                                                  },
                                                                                  "hits": {
                                                                                      "total": {
                                                                                          "value": 1,
                                                                                          "relation": "eq"
                                                                                      },
                                                                                      "max_score": 0.9808291,
                                                                                      "hits": [
                                                                                          {
                                                                                              "_index": "shopping",
                                                                                              "_type": "_doc",
                                                                                              "_id": "2",
                                                                                              "_score": 0.9808291,
                                                                                              "_source": {
                                                                                                  "title": "华为手机",
                                                                                                  "category": "华为",
                                                                                                  "images": "http://www.gulixueyuan.com/xm.jpg",
                                                                                                  "price": 4999.00
                                                                                              }
                                                                                          }
                                                                                      ]
                                                                                  }
                                                                              }
                                                                              
                                                                              2.13.2 高亮查询

                                                                              在 Postman 中,向 ES 服务器发 GET请求 : http://127.0.0.1:9200/shopping/_search,附带JSON体如下:

                                                                              {
                                                                              	"query":{
                                                                              		"match_phrase":{
                                                                              			"category" : "为"
                                                                              		}
                                                                              	},
                                                                                  "highlight":{
                                                                                      "fields":{
                                                                                          "category":{}//
                                                                                  "took": 36,
                                                                                  "timed_out": false,
                                                                                  "_shards": {
                                                                                      "total": 1,
                                                                                      "successful": 1,
                                                                                      "skipped": 0,
                                                                                      "failed": 0
                                                                                  },
                                                                                  "hits": {
                                                                                      "total": {
                                                                                          "value": 1,
                                                                                          "relation": "eq"
                                                                                      },
                                                                                      "max_score": 0.9808291,
                                                                                      "hits": [
                                                                                          {
                                                                                              "_index": "shopping",
                                                                                              "_type": "_doc",
                                                                                              "_id": "2",
                                                                                              "_score": 0.9808291,
                                                                                              "_source": {
                                                                                                  "title": "华为手机",
                                                                                                  "category": "华为",
                                                                                                  "images": "http://www.gulixueyuan.com/xm.jpg",
                                                                                                  "price": 4999.00
                                                                                              },
                                                                                              "highlight": {
                                                                                                  "category": [
                                                                                                      "华
VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]