官方文档: https://www.elastic.co/guide/en/elasticsearch/reference/7.5/getting-started-search.html
SearchAPI
ES 支持两种基本方式检索 :
- 一个是通过使用 REST request URI 发送搜索参数(uri+检索参数)
- 另一个是通过使用 REST request body 来发送它们(uri+请求体)
uri+检索参数
GET bank/_search?q=*&sort=account_number:asc
?后面表示检索条件
bank:表示在bank索引下;
_search:表示检索,固定写法;
q=*:表示查询所有;
sort=account_number:asc:表示按照account_number:asc升序排列

Elasticsearch 默认会分页返回10条数据,不会一下返回所有数据。
uri+请求体
Query DSL
1.基本语法格式
如果是针对某一个字段的查询
示例:
2.返回部分字段

match【匹配查询】
精确查找——非字符串类型

模糊查找—–字符串类型
精确匹配——字符串类型
match_phrase【短语匹配】
之前通过match匹配的时候,es会自动分词,只要目标字段包含了分词都会计算相关性得分返回。
而match_phrase不会进行分词,会把查询条件作为完整短语进行匹配。
multi_match【多字段匹配】
bool【复合查询】
query 中只有 should 且只有一种匹配规则,那么 should 的条件就会被作为默认匹配条件而去改变查询结果
filter 过滤
并不是所有的查询都需要产生分数,filter会对结果进行过滤,且不会计算相关性得分。(其作用和must相同,唯一区别就是不会计算相关性得分)
must_not 就可以看做是一个filter,它影响文档是否包含在结果中,但是不影响文档的评分。
term【精确检索】
和match一样,匹配某个属性的值。全文检索字段用match,其他非text字段匹配用term。
正文完