📅  最后修改于: 2023-12-03 15:23:08.625000             🧑  作者: Mango
Elasticsearch是一个开源的全文搜索引擎,可以存储、搜索和分析大量的非结构化或半结构化数据。要在 Elasticsearch 中显示所有文档,可以使用 Elasticsearch 的 API。
要查找所有文档,可以使用 Elasticsearch 的 _search
API,设置参数 size
为 0
,这样就不会返回任何结果,只会返回文档数量。
GET /index/_search
{
"size": 0
}
这将返回以下结果:
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 1000,
"relation": "eq"
},
"max_score": null,
"hits": []
}
}
其中 "total"
表示文档数量。
要获取所有文档,可以使用 Elasticsearch 的 _search
API,设置参数 size
为一个非常大的数字,例如 10000
。
GET /index/_search
{
"size": 10000
}
这将返回前 10000
个文档,如果需要获取更多的文档,可以使用参数 from
。
GET /index/_search
{
"size": 10000,
"from": 10000
}
这将返回文档从 10001
到 20000
,以此类推。
如果文档数量很多,一次获取可能会导致性能下降,可以使用 Elasticsearch 的滚动API,将获取到的文档缓存起来,然后分批读取。
POST /index/_search?scroll=1m
{
"size": 1000,
"query": {
"match_all": {}
}
}
这将返回前 1000
个文档,并生成一个 scroll_id
,用于后续的查询。
{
"_scroll_id": "DnF1ZXJ5VGhlbkZldGNoBQAAAAAAAAAAAgF5blBlZkNyZk5CaUY4aUhYQjJSamcAAAAAAAAAAAHheWVwZWZPVDlaZlJNbFJzUHNFMjRmcwAAAAAAAAB7HllcGVmT1Q5WmZSTWxSc1BzRTE0ZnMAAAAAAAAAd3llcGVmT1Q5WmZSTWxSc1BzRTE0ZnMAAAAAAAAAdnllcGVmT1Q5WmZSTWxSc1BzRTE0ZnMAAAAAAAAAdHllcGVmT1Q5WmZSTWxSc1BzRTE0ZnMAAAAAAAAAZ3llcGVmT1Q5WmZSTWxSc1BzRTE0ZnMAAAAAAAAAbXllcGVmT1Q5WmZSTWxSc1BzRTE0ZnMAAAAAAAAAbnllcGVmT1Q5WmZSTWxSc1BzRTE0ZnMAAAAAAAAAdHllcGVmT1Q5WmZSTWxSc1BzRTE0ZnMAAAAAAAAAVHllcGVmT1Q5WmZSTWxSc1BzRTE0ZnMAAAAAAAAAdnllcGVmT1Q5WmZSTWxSc1BzRTE0ZnMAAAAAAAAAcnllcGVmT1Q5WmZSTWxSc1BzRTE0ZnMAAAAAAAAAeHllcGVmT1Q5WmZSTWxSc1BzRTE0ZnMAAAAAAAAAdXllcGVmT1Q5WmZSTWxSc1BzRTE0ZnMAAAAAAAAAd3llcGVmT1Q5WmZSTWxSc1BzRTE0ZnMAAAAAAAAAdHllcGVmT1Q5WmZSTWxSc1BzRTE0ZnMAAAAAAAAAVHllcGVmT1Q5WmZSTWxSc1BzRTE0ZnMAAAAAAAAAdnllcGVmT1Q5WmZSTWxSc1BzRTE0ZnMAAAAAAAAAcnllcGVmT1Q5WmZSTWxSc1BzRTE0ZnMAAAAAAAAAeHllcGVmT1Q5WmZSTWxSc1BzRTE0ZnMAAAAAAAAAdXllcGVmT1Q5WmZSTWxSc1BzRTE0ZnMAAAAAAAAAd3llcGVmT1Q5WmZSTWxSc1BzRTE0ZnMAAAAAAAAAdHllcGVmT1Q5WmZSTWxSc1BzRTE0ZnMAAAAAAAAAVHllcGVmT1Q5WmZSTWxSc1BzRTE0ZnMAAAAAAAAAdnllcGVmT1Q5WmZSTWxSc1BzRTE0ZnMAAAAAAAAEmR0NGVjY28yWWdDcmc1dTZYeVN0QQ==",
"took": 3,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 10000,
"relation": "eq"
},
"max_score": 1,
"hits": [...]
}
}
可以使用 scroll_id
获取后续的文档:
POST /_search/scroll
{
"scroll_id": "DnF1ZXJ5VGhlbkZldGNoBQAAAAAAAAAAAgF5blBlZkNyZk5CaUY4aUhYQjJSamcAAAAAAAAAAAHheWVwZWZPVDlaZlJNbFJzRHNESHZTcXMAAAAAAAAAd3llcGVmT1Q5WmZSTWxSc0RzRESHZTcXMAAAAAAAAAdnllcGVmT1Q5WmZSTWxSc0RzRESHZTcXMAAAAAAAAAdHllcGVmT1Q5WmZSTWxSc0RzRESHZTcXMAAAAAAAAAZ3llcGVmT1Q5WmZSTWxSc0RzRESHZTcXMAAAAAAAAAbXllcGVmT1Q5WmZSTWxSc0RzRESHZTcXMAAAAAAAAAbnllcGVmT1Q5WmZSTWxSc0RzRESHZTcXMAAAAAAAAAdHllcGVmT1Q5WmZSTWxSc0RzRESHZTcXMAAAAAAAAAVHllcGVmT1Q5WmZSTWxSc0RzRESHZTcXMAAAAAAAAAdnllcGVmT1Q5WmZSTWxSc0RzRESHZTcXMAAAAAAAAAcnllcGVmT1Q5WmZSTWxSc0RzRESHZTcXMAAAAAAAAAeHllcGVmT1Q5WmZSTWxSc0RzRESHZTcXMAAAAAAAAAdXllcGVmT1Q5WmZSTWxSc0RzRESHZTcXMAAAAAAAAAd3llcGVmT1Q5WmZSTWxSc0RzRESHZTcXMAAAAAAAAAdHllcGVmT1Q5WmZSTWxSc0RzRESHZTcXMAAAAAAAAAVHllcGVmT1Q5WmZSTWxSc0RzRESHZTcXMAAAAAAAAAdnllcGVmT1Q5WmZSTWxSc0RzRESHZTcXMAAAAAAAAAcnllcGVmT1Q5WmZSTWxSc0RzRESHZTcXMAAAAAAAAAeHllcGVmT1Q5WmZSTWxSc0RzRESHZTcXMAAAAAAAAAdXllcGVmT1Q5WmZSTWxSc0RzRESHZTcXMAAAAAAAAAd3llcGVmT1Q5WmZSTWxSc0RzRESHZTcXMAAAAAAAAAdHllcGVmT1Q5WmZSTWxSc0RzRESHZTcXMAAAAAAAAAVHllcGVmT1Q5WmZSTWxSc0RzRESHZTcXMAAAAAAAAAdnllcGVmT1Q5WmZSTWxSc0RzRESHZTcXMAAAAAAAA=\"",
"scroll": "1m"
}
每次获取的文档数量和设置的 size
相同,默认情况下,scroll_id
的过期时间是 1m
,也就是说必须在 1m
内使用 scroll_id
获取后续的文档,否则 scroll_id
将失效。
要结束搜索并释放滚动上下文,可以使用 Elasticsearch 的 _clear_scroll
API,指定 scroll_id
。
DELETE /_search/scroll?scroll_id=DnF1ZXJ5VGhlbkZldGNoBQAAAAAAAAAAAgF5blBlZkNyZk5CaUY4aUhYQjJSamcAAAAAAAAAAAHheWVwZWZPVDlaZlJNbFJzRHNESHZTcXMAAAAAAAAAd3llcGVmT1Q5WmZSTWxSc0RzRESHZTcXMAAAAAAAAAdnllcGVmT1Q5WmZSTWxSc0RzRESHZTcXMAAAAAAAAAdHllcGVmT1Q5WmZSTWxSc0RzRESHZTcXMAAAAAAAAAZ3llcGVmT1Q5WmZSTWxSc0RzRESHZTcXMAAAAAAAAAbXllcGVmT1Q5WmZSTWxSc0RzRESHZTcXMAAAAAAAAAbnllcGVmT1Q5WmZSTWxSc0RzRESHZTcXMAAAAAAAAAdHllcGVmT1Q5WmZSTWxSc0RzRESHZTcXMAAAAAAAAAVHllcGVmT1Q5WmZSTWxSc0RzRESHZTcXMAAAAAAAAAdnllcGVmT1Q5WmZSTWxSc0RzRESHZTcXMAAAAAAAAAcnllcGVmT1Q5WmZSTWxSc0RzRESHZTcXMAAAAAAAAAeHllcGVmT1Q5WmZSTWxSc0RzRESHZTcXMAAAAAAAAAdXllcGVmT1Q5WmZSTWxSc0RzRESHZTcXMAAAAAAAAAd3llcGVmT1Q5WmZSTWxSc0RzRESHZTcXMAAAAAAAAAdHllcGVmT1Q5WmZSTWxSc0RzRESHZTcXMAAAAAAAAAVHllcGVmT1Q5WmZSTWxSc0RzRESHZTcXMAAAAAAAAAdnllcGVmT1Q5WmZSTWxSc0RzRESHZTcXMAAAAAAAAEmR0NGVjY28yWWdDcmc1dTZYeVN0QQ=="
这将结束搜索并释放滚动上下文所使用的资源。
以上就是在 Elasticsearch 中显示所有文档的方法,可以根据实际需求选择相应的方法。