ES基本搜索(1)
1.空搜索
GET <写路径>/_search
返回的结果:
eg:
GET propdict/doc/_search
1 { 2 "took": 5, 3 "timed_out": false, 4 "_shards": { 5 "total": 5, 6 "successful": 5, 7 "skipped": 0, 8 "failed": 0 9 }, 10 "hits":{ 11 省略。。。。。 12 } 13 }
hits
返回结果中最
重要的部分是 hits
,它 包含 total
字段来表示匹配到的文档总数,并且一个 hits
数组包含所查询结果的前十个文档。
在 hits
数组中每个结果包含文档的 _index
、 _type
、 _id
,加上 _source
字段。这意味着我们可以直接从返回的搜索结果中使用整个文档。这不像其他的搜索引擎,仅仅返回文档的ID,需要你单独去获取文档。
每个结果还有一个 _score
,它衡量了文档与查询的匹配程度。默认情况下,首先返回最相关的文档结果,就是说,返回的文档是按照 _score
降序排列的。在这个例子中,我们没有指定任何查询,故所有的文档具有相同的相关性,因此对所有的结果而言 1
是中性的 _score
。
max_score
值是与查询所匹配文档的 _score
的最大值。
Took
took 值告诉我们执行整个搜索请求耗费多少毫秒
shards
_shards
部分 告诉我们在查询中参与分片的总数,以及这些分片成功了多少个失败了多少个。正常情况下我们不希望分片失败,但是分片失败是可能发生的。如果我们遭遇到一种灾难级别的故障,在这个故障中丢失了相同分片的原始数据和副本,那么对这个分片将没有可用副本来对搜索请求作出响应。假若这样,Elasticsearch 将报告这个分片是失败的,但是会继续返回剩余分片的结果。
timeout
告诉我们查询是否超时,默认情况不超时。
如果低响应时间比完成结果更重要,你可以指定 timeout
为 10 或者 10ms(10毫秒),或者 1s(1秒):
GET /_search?timeout=10ms
如果请求超时,ES将会返回已经成功从每个分片查询到的结果
2.多个索引和多个类型下的搜索
在进行搜索时,可以旋转具体的索引和类型
/_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
类型
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步