es(五—)——搜索

1. 空搜索

最基本的搜索API表单是空搜索(empty search),它没有指定任何的查询条件,只返回集群索引中的所有文档:
在这里插入图片描述

2. 响应内容

上面的响应内容(为了编辑简洁)类似于这样:

在这里插入图片描述

2.1 hits

响应中最重要的部分是 hits ,它包含了 total 字段来表示匹配到的文档总数, hits 数组还包含了匹配到的前10条数据。

hits 数组中的每个结果都包含 _index 、 _type 和文档的 _id 字段。

每个节点都有一个_score 字段,这是相关性得分(relevance score),它衡量了文档与查询的匹配程度。默认的,返回的结 果中关联性最大的文档排在首位;这意味着,它是按照 _score 降序排列的
空搜索的情况下,我们没有指定任何查询,所以所有 文档的相关性是一样的,因此所有结果的 _score 都是取得一个中间值 1

max_score 指的是所有文档匹配查询中 _score 的最大值。

2.2 took

took 告诉我们整个搜索请求花费的毫秒数。

2.3 shards

_shards 节点告诉我们参与查询的分片数( total 字段),有多少是成功的( successful 字段),有多少的是失败的 ( failed 字段)

如果我们遭受一些重大的故障导致主分片和复制分片都 故障,那这个分片的数据将无法响应给搜索请求。这种情况下,Elasticsearch将报告分片 failed ,但仍将继续返回剩余分片上的结果。

2.4 timeout

time_out 值告诉我们查询超时与否。

如果响应速度比完整的结果更重要,你可以定 义 timeout 参数为 10 或者 10ms (10毫秒),或者 1s (1秒)
在这里插入图片描述
Elasticsearch将返回在请求超时前收集到的结果。

在这里插入图片描述

3. 多索引和多类别

你可能想搜索一个或几个自定的索引或类型,我们能通过定义URL中的索引或类型达到这个目的

/_search

在所有索引的所有类型中搜索

/gb/_search

在索引 gb 的所有类型中搜索

/gb,us/_search

在索引 gb 和 us 的所有类型中搜索

/g*,u*/_search

在以 g 或 u 开头的索引的所有类型中搜索

/gb/user/_search

在索引 gb 的类型 user 中搜索

/gb,us/user,tweet/_search

在索引 gb 和 us 的类型为 user 和 tweet 中搜索

/_all/user,tweet/_search

在所有索引的 user 和 tweet 中搜索 search types user and tweet in all indices

4. 分页

和SQL使用 LIMIT 关键字返回只有一页的结果一样,Elasticsearch接受 from 和 size 参数:

size : 果数,默认 10
from : 跳过开始的结果数,默认 0

例:如果你想每页显示5个结果,页码从1到3,那请求如下
在这里插入图片描述
应该当心分页太深或者一次请求太多的结果。结果在返回前会被排序。但是记住一个搜索请求常常涉及多个分片。每个分片 生成自己排好序的结果,它们接着需要集中起来排序以确保整体排序正确。
在这里插入图片描述

5. 简易搜索

search API有两种表单:

  • 一种是“简易版”的查询字符串(query string)将所有参数通过查询字符串定义,
  • 另一种版本使用 JSON完整的表示请求体(request body),这种富搜索语言叫做结构化查询语句(DSL)

查询字符串搜索对于在命令行下运行点对点(ad hoc)查询特别有用。
例:
查询所有类型为 tweet 并在 tweet 字段中 包含 elasticsearch 字符的文档:
在这里插入图片描述
查找 name 字段中包含 “john” 和 tweet 字段包含 “mary” 的结果。实际的查询只需要:
在这里插入图片描述
但是url编码 需要将查询字符串参数变得更加神秘:
在这里插入图片描述
“+” 前缀表示语句匹配条件必须被满足。类似的 “-” 前缀表示条件必须不被满足。所有条件如果没有 + 或 - 表示是可选的 ——匹配越多,相关的文档就越多。

6. _all 字段

返回包含 “mary” 字符的所有文档的简单搜索:
在这里插入图片描述

6.1 _all field

在这里插入图片描述
编码后的查询字符串
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值