Elasticsearch实战学习笔记系列 Elasticsearch搜索数据
目录
Elasticsearch实战学习笔记系列 Elasticsearch搜索数据
系列目录
Elasticsearch实战学习笔记(一) Elasticsearch介绍
Elasticsearch实战学习笔记(二) Elasticsearch环境搭建(Mac Docker)
Elasticsearch实战学习笔记(三) Elasticsearch深入功能
Elasticsearch实战学习笔记(四) Elasticsearch索引、更新和删除数据
Elasticsearch实战学习笔记(五) Elasticsearch搜索数据
Elasticsearch实战学习笔记(六) Elasticsearch分析数据
Elasticsearch实战学习笔记(七) Elasticsearch使用相关性进行搜索
Elasticsearch实战学习笔记(八) Elasticsearch文档间的关系
一、搜索请求的结构
Elasticsearch 的搜索是基于 JSON文档或者是基于 URL 的请求。 请求被发送到服务器,由于所有搜索请求遵循同样的格式,理解对于每个搜索请求所能修改的模块,是非常有帮助的。
1.确定搜索范围
所有的REST搜索请求使用_search的REST端点,既可以是 GET请求,也可以是 POST请求。既可以搜索整个集群,也可以通过在搜索 URL 中指定索引或类型的名称来限制范围 。
2.搜索请求的基本模块
一旦选择了要搜索的索引,就需要配置搜索请求中最为重要的模块。 这些模块涉及文档返回的数量,选择最佳的文档返回,以及配置不希望哪些文档出现在结果中
- query 配置了基于评分返回的最佳文挡,也包括了你不希望返回哪些文档
- size 代表了返回文档的数量
- from 和size一起使用,from 用于分页操作
- _source 默认是返回完整自_source 字段。 通过配置_source,将过滤返回的字段 。如果索引的文档很大,而且无须结果中的全部内容就使用这个功能
- sort 默认的排序是基于文挡的得分
(1)结果起始和页面大小
命名适宜的 from和 size 字段,用于指定结果的开始点,以及每页结果的数量。
curl 'localhost:9200/get-together/_search?from=10&size=10'
(2)基于 URL 的搜索请求
curl 'localhost:9200/get-together/_search?sort=date:asc'
请求匹配了所有文挡, 但是默认返回前10项结果 ,按照日期的升序排列.
限制了回复中的 source 字段,只需要活动的标题和日期,此外希望活动按照日期排序。
curl 'localhost:9200/get-together/_search?sort=date:asc&q=title:elasticsearch'
指定了在标题字段中查询关键词"elasticsearch"
3.基于请求主体的搜索请求
(1)结果中返回的字段
过滤返回的_source内容
(2)_source 返回字段中的通配符
如果想同时返回"name"和"nation" 字段,可以这样配置_source: "na*",也可以使用通配字符串的数组来指定多个通配符
(3)结果的排序
(4)实践
4.理解回复的结构
二、介绍查询和过滤器DSL
基本搜索使用match_all
过滤器和本章讨论的查询类似 ,但是它们在评分机制和搜索’行为的性能上有所不同 。 不像查询会为特定的词条计算得分,搜索的过滤器只是为"文档是否匹配这个查询”,返回简单的“是” 或“否”的答案,过滤器可以比普通的查询更快而且还可以被缓存 。
三、组合查询
1.Bool查询
- must 必须匹配 只有匹配上这些查询的结果才会被返回
- should 应该匹配 只有匹配上指定数量子句的文档才会被返回
- must_not 必须不匹配 会使得匹配其的文档被移出结果集合
2.Bool过滤器
四、超越match和过滤器查询
1.Range查询和过滤器
2.prefix查询和过滤器
prefix 查询和过滤器允许你根据给定的前缀来搜索词条,在索引中搜索以“liber” 开头的全部活动
如果发送同样的请求,不是使用“ liber”,而是“Liber”,那会发生什么呢?由于在发送之前,搜索前缀是不会被分析的,如此操作将无法找到索引中小写的词条 。 这是由 Elasticsearch分析’文档和查询的方式引起的
3.wildcard查询 通配符
五、使用过滤器查询字段的存在性
1.exists过滤器
2.missing过滤器
missing 过滤器让你可以搜索字段里没有值,或者是映射时指定的默认值的文档
系列目录
Elasticsearch实战学习笔记(一) Elasticsearch介绍
Elasticsearch实战学习笔记(二) Elasticsearch环境搭建(Mac Docker)
Elasticsearch实战学习笔记(三) Elasticsearch深入功能
Elasticsearch实战学习笔记(四) Elasticsearch索引、更新和删除数据
Elasticsearch实战学习笔记(五) Elasticsearch搜索数据
Elasticsearch实战学习笔记(六) Elasticsearch分析数据