我在 Elasticsearch 中有一个小型数据库,为了测试目的,我想要拉回所有记录。我尝试使用以下形式的 URL...
http://localhost:9200/foo/_search?pretty=true&q={'matchAll':{''}}
请问有人可以给我实现这个功能所需的URL吗?
我在 Elasticsearch 中有一个小型数据库,为了测试目的,我想要拉回所有记录。我尝试使用以下形式的 URL...
http://localhost:9200/foo/_search?pretty=true&q={'matchAll':{''}}
请问有人可以给我实现这个功能所需的URL吗?
curl -X GET 'localhost:9200/foo/_search?q=*&pretty'
curl -XGET http://35.195.120.21:9200/_all/_search?size=50&pretty
"took" : 866,
"timed_out" : false,
"_shards" : {
"total" : 25,
"successful" : 25,
"failed" : 0
},
"hits" : {
"total" : 512034694,
"max_score" : 1.0,
"hits" : [ {
"_index" : "grafana-dash",
"_type" : "dashboard",
"_id" : "test",
"_score" : 1.0,
...
如果还有像我一样需要从Elasticsearch检索所有数据的人,以下是我的做法。此外,所有数据包括所有索引和所有文档类型。我正在使用Elasticsearch 6.3。
curl -X GET "localhost:9200/_search?pretty=true" -H 'Content-Type: application/json' -d'
{
"query": {
"match_all": {}
}
}
'
这是实现你想要的查询的方法, (我建议使用Kibana,因为它能更好地理解查询)
GET my_index_name/my_type_name/_search
{
"query":{
"match_all":{}
},
size : 20,
from : 3
}
要获取所有记录,您必须使用“match_all”查询。
大小是您想要获取的记录数(一种限制)。 默认情况下,ES仅返回10条记录
从就像跳过,跳过前3条记录。
如果您想精确获取所有记录,请使用来自Kibana查询结果中“total”字段的值,并将其与“size”一起使用。
curl -XGET 'localhost:9200/index/type/_search?scroll=1m' -d '
{
"size":10000,
"query" : {
"match_all" : {}
}
}'
接下来,您需要使用Scroll API获取结果,并获得_scroll_id值,将此值放入scroll_id中。
curl -XGET 'localhost:9200/_search/scroll' -d'
{
"scroll" : "1m",
"scroll_id" : ""
}'
官方文档提供了这个问题的答案!你可以在这里找到它。
{
"query": { "match_all": {} },
"size": 1
}
您只需将 size (1) 替换为您想要查看的结果数量即可!
curl -XGET '{{IP/localhost}}:9200/{{Index name}}/{{type}}/_search?scroll=10m&pretty' -d '{
"query": {
"filtered": {
"query": {
"match_all": {}
}}'
除了@Akira Sendoh之外,没有人回答如何获取所有文档。但即使是那个解决方案也会在没有日志的情况下导致我的ES 6.3服务崩溃。唯一对我有用的是使用低级别的elasticsearch-py
库,通过scan helper来使用scroll()
api:
from elasticsearch.helpers import scan
doc_generator = scan(
es_obj,
query={"query": {"match_all": {}}},
index="my-index",
)
# use the generator to iterate, dont try to make a list or you will get out of RAM
for doc in doc_generator:
# use it somehow
elasticsearch-dsl
库,它提供了更抽象、更简洁的调用,例如:http://elasticsearch-dsl.readthedocs.io/en/latest/search_dsl.html#hits。使用 Elasticsearch 7.5.1
http://${HOST}:9200/${INDEX}/_search?pretty=true&q=*:*&scroll=10m&size=5000
如果您知道数组的大小,可以使用 &size=${number} 指定数组的大小。
如果您不知道索引,则可以这样做
http://${HOST}:9200/_cat/indices?v
你可以使用 size=0,这将返回所有文档的示例。
curl -XGET 'localhost:9200/index/type/_search' -d '
{
size:0,
"query" : {
"match_all" : {}
}
}'
http://curl -XGET 'localhost:9200/foo/_search'
。 - Mr. N