查询索引&特定索引
命令展示
java
GET /<index_name>/_search
GET /_search
可选参数
- size:单次查询多少条文档,默认为 10
- from:起始文档偏移量。需要为非负数,默认为0
- timeout: 指定等待每个分片响应的时间段。如果在超时到期之前未收到响应,则请求失败并返回错误。默认为无超时。
具体命令
java
GET earthquakes/_search
GET /_search
小白比喻👇
想象一下,Elasticsearch 是一个巨大的图书馆。
GET earthquakes/_search
earthquakes
: 这就像是指定图书馆里的一个特定区域,比如“地震学专区”。/_search
: 这是在说“在这个专区里进行搜索”。 合起来的意思: 只在“地震学专区”(earthquakes
索引)里查找所有关于地震的书(文档)。 你只关心这个专区的内容,其他区域(比如“气象学专区”、“地质学专区”)完全不管。GET /_search
/_search
: 这是在说“在整个图书馆里进行搜索”。 前面没有指定专区(索引名)。 合起来的意思: 在整个图书馆(Elasticsearch 集群里的所有索引)里查找所有符合你条件的书(文档)。 不管书在哪个专区(索引),只要符合你的搜索条件,都会被找出来。
总结一下区别:
命令 | 比喻 | 搜索范围 | 实际效果 |
---|---|---|---|
GET earthquakes/_search | 在 “地震学专区” 里找书 | 仅限 earthquakes 索引 | 只搜索 earthquakes 索引里的数据。 |
GET /_search | 在 整个图书馆 里找书 | 所有索引 | 搜索整个集群里所有索引的数据。 |
举个栗子:
- 你想找 所有关于“震级”的记录。 用
GET earthquakes/_search { "query": ... }
:你只会得到earthquakes
索引里 关于震级的记录。 用GET /_search { "query": ... }
:你会得到 整个数据库里所有索引 中包含“震级”的记录(比如earthquakes
索引里有,reports
索引里某个报告提到震级,news
索引里某条新闻提到震级,都会被搜出来)。
简单来说:
GET 索引名/_search
:精准定位,只在 一个 特定的地方(索引)找东西。GET /_search
:广撒网,在 所有 地方(所有索引)找东西。