全文检索-ElasticSearch 进阶检索

官方文档: 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 进阶检索

Elasticsearch 默认会分页返回10条数据,不会一下返回所有数据。

uri+请求体

Query DSL

1.基本语法格式

如果是针对某一个字段的查询

 示例:

 2.返回部分字段

 

全文检索-ElasticSearch 进阶检索

match【匹配查询】

精确查找——非字符串类型

全文检索-ElasticSearch 进阶检索

模糊查找—–字符串类型

精确匹配——字符串类型

match_phrase【短语匹配】

之前通过match匹配的时候,es会自动分词,只要目标字段包含了分词都会计算相关性得分返回。

而match_phrase不会进行分词,会把查询条件作为完整短语进行匹配。

multi_match【多字段匹配】

bool【复合查询】

query 中只有 should 且只有一种匹配规则,那么 should 的条件就会被作为默认匹配条件而去改变查询结果

filter 过滤

并不是所有的查询都需要产生分数,filter会对结果进行过滤,且不会计算相关性得分。(其作用和must相同,唯一区别就是不会计算相关性得分)

must_not 就可以看做是一个filter,它影响文档是否包含在结果中,但是不影响文档的评分。

term【精确检索】

和match一样,匹配某个属性的值。全文检索字段用match,其他非text字段匹配用term。

正文完
 0