ElasticSearch 搜索入门

搜索是 ElasticSearch 最为丰富有趣的功能,这一块斌哥将从全文查询、词项查询、复合查询、嵌套查询、位置查询、特殊查询等多个方面来和大家逐一剖析 ElasticSearch 中搜索的玩法!今天我们就先来看一个简单的搜索入门。 本文是ElasticSearch 系列第 18 篇,和大家聊一聊索引的基本操作,前 17 篇传送门: 打算出一个 ElasticSearch 教程,谁赞成,谁反对? ElasticSearch 从安装开始 ElasticSearch 第三弹,核心概念介绍 ElasticSearch 中的中文分词器该怎么玩? ElasticSearch 索引基本操作 ElasticSearch 文档的添加、获取以及更新 ElasticSearch 文档的删除和批量操作 ElasticSearch 文档路由,你的数据到底存在哪一个分片上? ElasticSearch 并发的处理方式:锁和版本控制 ElasticSearch 中的倒排索引到底是什么? ElasticSearch 动态映射与静态映射 ElasticSearch 四种字段类型详解 ElasticSearch 中的地理类型和特殊类型 ElasticSearch 23 种映射参数详解 ElasticSearch 如何配置某个字段的权重? ElasticSearch 23 种映射参数详解【3】 ElasticSearch 映射模版 搜索数据导入:

搜索入门:

以下是视频笔记: 注意,笔记只是视频内容的一个简要记录,因此笔记内容比较简单,完整的内容可以查看视频。 13.ElasticSearch 搜索数据导入

创建索引: PUT books { "mappings": { "properties": { "name":{ "type": "text", "analyzer": "ik_max_word" }, "publish":{ "type": "text", "analyzer": "ik_max_word" }, "type":{ "type": "text", "analyzer": "ik_max_word" }, "author":{ "type": "keyword" }, "info":{ "type": "text", "analyzer": "ik_max_word" }, "price":{ "type": "double" } } } } 执行如下脚本导入命令: curl -XPOST "http://localhost:9200/books/_bulk?pretty" -H "content-type:application/json" --data-binary @bookdata.json 14.ElasticSearch 搜索入门 搜索分为两个过程: 当向索引中保存文档时,默认情况下,es 会保存两份内容,一份是 _source 中的数据,另一份则是通过分词、排序等一系列过程生成的倒排索引文件,倒排索引中保存了词项和文档之间的对应关系。 搜索时,当 es 接收到用户的搜索请求之后,就会去倒排索引中查询,通过的倒排索引中维护的倒排记录表找到关键词对应的文档集合,然后对文档进行评分、排序、高亮等处理,处理完成后返回文档。 14.1 简单搜索 查询文档: GET books/_search { "query": { "match_all": {} } } 查询结果如下:

image-20201111204708546 hits 中就是查询结果,total 是符合查询条件的文档数。 简单搜索可以简写为: GET books/_search 简单搜索默认查询 10 条记录。 14.2 词项查询 即 term 查询,就是根据词去查询,查询指定字段中包含给定单词的文档,term 查询不被解析,只有搜索的词和文档中的词精确匹配,才会返回文档。应用场景如:人名、地名等等。 查询 name 字段中包含 十一五 的文档。 GET books/_search { "query": { "term": { "name": "十一五" } } } 14.3 分页 默认返回前 10 条数据,es 中也可以像关系型数据库一样,给一个分页参数: GET books/_search { "query": { "term": { "name": "十一五" } }, "size": 10, "from": 10 } 14.4 过滤返回字段 如果返回的字段比较多,又不需要这么多字段,此时可以指定返回的字段: GET books/_search { "query": { "term": { "name": "十一五" } }, "size": 10, "from": 10, "_source": ["name","author"] } 此时,返回的字段就只有 name 和 author 了。

image-20201111210101809 14.5 最小评分 有的文档得分特别低,说明这个文档和我们查询的关键字相关度很低。我们可以设置一个最低分,只有得分超过最低分的文档才会被返回。 GET books/_search { "query": { "term": { "name": "十一五" } }, "min_score":1.75, "_source": ["name","author"] } 得分低于 1.75 的文档将直接被舍弃。 14.6 高亮 查询关键字高亮: GET books/_search { "query": { "term": { "name": "十一五" } }, "min_score":1.75, "_source": ["name","author"], "highlight": { "fields": { "name": {} } } }


已有 0 条评论

    欢迎您,新朋友,感谢参与互动!