本文主要介绍 Elasticsearch REST API 的使用,相关的环境及软件信息如下:CentOS 7.6.1810、Elasticsearch 8.2.2。
1、REST API 使用方法
说明:
请求方法,如:GET,POST,PUT,HEAD 或 DELETE
协议,http 或 https
Elasticsearch 服务端口,默认为9200
API 端点
请求参数
JSON 格式的请求体
2、Compact and aligned text (CAT) APIs
cat API 是提供给人在 Kibana 控制台或命令行中使用的,不适合应用程序调用。
3、Index APIs
同时设置了 setting 和 mapping 信息;setting 里面包含分片和副本信息,mapping 里包含字段设置的详细信息。
字段可以新增,已有的字段只能修改字段的 search_analyze r属性。
4、Document APIs
A、设置 id 为 1
B、不设置 id,将自动生成
C、批量新增文档
注意:最后一行空白是必填项,否则将报告错误。
[En]
Note: the last blank line is required, otherwise an error will be reported.
只更新参数设置的字段。
没有对应 id 的文档就创建,有就覆盖更新所有的字段(相当于先删除再新增)。
5、Search APIs
term 查询不会对输入的内容进行分词处理,而是作为一个整体来查询。
A、查询单个词
B、查询多个词
对输入的内容进行分词,然后根据分词进行查询。
[En]
Carry on the word segmentation to the input content, and then query according to the word segmentation.
多字段匹配。
匹配整个查询字符串。
查询所有数据。
query_string 可以同时实现前面几种查询方法。
A、类似 match
B、类似 mulit_match
C、类似 match_phrase
D、带运算符查询,运算符两边的词不再分词
1、查询同时包含 “文学” 和 “伟大” 的文档
2、查询 name 或 success 字段包含”文学”和”伟大”这两个单词,或者包含”李白”这个单词的文档。
类似 query_string,主要区别如下:
1、不支持AND OR NOT ,会当做字符处理;使用 + 代替 AND,| 代替OR,- 代替 NOT
2、会忽略错误的语法
查询同时包含 “文学” 和 “伟大” 的文档:
模糊查询时使用的参数:
fuzziness
允许的最大编辑距离,默认不开启模糊查询,相当于 fuzziness=0。支持的格式
1、可以是数字(0、1、2)代表固定的最大编辑距离
2、自动模式,AUTO:[low],[high]
查询词长度在 [0-low)范围内编辑距离为 0(即强匹配)
查询词长度在 [low, high) 范围内允许编辑 1 次
查询词长度 >high 允许编辑 2 次
prefix_length
控制两个字符串匹配的最小相同的前缀大小,也就是前 n 个字符不允许编辑,必须与查询词相同,默认是 0,大于 0 时可以显著提升查询性能
max_expansions
产生的最大模糊选项
transpositions
相邻位置的字符互换是否计入编辑距离。全文查询不支持此参数。
[En]
Whether the interchange of characters in adjacent positions is counted as an editing distance. This parameter is not supported in full-text query.
A、全文查询时使用模糊参数
先分词再计算模糊选项。
B、使用 fuzzy query
对于没有分词的输入,直接计算模糊选项。
[En]
For the input without word segmentation, the fuzzy option is calculated directly.
组合查询使用 bool 来组合多个查询条件。
must
同时满足
should
满足其中任意一个
must_not
同时不满足
filter
过滤搜索,不计算得分
A、查询 success 包含 “思想” 且 age 在 [20-40] 之间的文档:
B、过滤出 success 包含 “思想” 且 age 在 [20-40] 之间的文档,不计算得分:
A、求和
B、类似 select count distinct(age) from poet-index
C、数量、最大、最小、平均、求和
D、类似 select name,count(*) from poet-index group by name
E、类似 select name,age, count(*) from poet-index group by name,age
F、类似 select avg(age) from poet-indexwhere name=’李白’
如果希望 Elasticsearch 能够根据我们的搜索内容给一些推荐的搜索选项,可以使用推荐搜索。
推荐模式 suggest_mode:
推荐模式
popular
推荐词频更高的一些搜索
missing
当没有搜索结果时,建议使用此选项。
[En]
It is recommended when there are no search results.
always
无论在什么情况下都要提出建议
[En]
Make recommendations no matter what the circumstances
突出显示搜索结果中的关键字。
[En]
Highlight the keywords in the search results.
Elasticsearch 支持通过 SQL 查询数据。
详细的 Elasticsearch REST API 使用说明,请参考官网文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/rest-apis.html。
Original: https://blog.51cto.com/wuyongyin/5478433
Author: 且行且码
Title: Elasticsearch 入门实战(3)–REST API 使用
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/508487/
转载文章受原作者版权保护。转载请注明原作者出处!