我在Elasticsearch中有一个小数据库,出于测试目的,我想把所有记录拉回来。我正在尝试使用表单的URL…
http://localhost:9200/foo/_search?pretty=true&q={'matchAll':{''}}
有人能给我你要用来完成这个的URL吗?
我在Elasticsearch中有一个小数据库,出于测试目的,我想把所有记录拉回来。我正在尝试使用表单的URL…
http://localhost:9200/foo/_search?pretty=true&q={'matchAll':{''}}
有人能给我你要用来完成这个的URL吗?
当前回答
我认为lucene语法是受支持的,所以:
http://localhost: 9200 / foo / _search ?漂亮=真的,q = *: *
size默认为10,因此您可能还需要&size=BIGNUMBER来获取超过10个项目。(其中BIGNUMBER等于一个你认为比你的数据集大的数字)
但是,elasticsearch文档建议对于较大的结果集,使用扫描搜索类型。
EG:
curl -XGET 'localhost:9200/foo/_search?search_type=scan&scroll=10m&size=50' -d '
{
"query" : {
"match_all" : {}
}
}'
然后按照上面建议的文档链接继续请求。
EDIT: scan 2.1.0中已弃用。
与按_doc排序的常规滚动请求相比,Scan并没有提供任何好处。弹性文档链接(由@christophe-roussy提供)
其他回答
http://127.0.0.1:9200/foo/_search/?size=1000&pretty=1
^
请注意size参数,它将每个分片显示的命中数从默认值(10)增加到1000。
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-from-size.html
如果你只是添加一些大的数字作为大小,Elasticsearch会变得非常慢,一种获取所有文档的方法是使用scan和scroll id。
https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-scroll.html
在Elasticsearch v7.2中,您可以这样做:
POST /foo/_search?scroll=1m
{
"size": 100,
"query": {
"match_all": {}
}
}
这样的结果将包含一个_scroll_id,您必须查询它来获得下一个100块。
POST /_search/scroll
{
"scroll" : "1m",
"scroll_id" : "<YOUR SCROLL ID>"
}
elasticsearch(ES)既支持GET请求,也支持POST请求,以便从ES集群索引中获取数据。
当我们执行GET操作时:
http://localhost:9200/[your index name]/_search?size=[no of records you want]&q=*:*
当我们做POST时:
http://localhost:9200/[your_index_name]/_search
{
"size": [your value] //default 10
"from": [your start index] //default 0
"query":
{
"match_all": {}
}
}
我建议使用elasticsearch http://mobz.github.io/elasticsearch-head/的UI插件 这将帮助您更好地了解您创建的索引,并测试您的索引。
http://localhost:9200/foo/_search/?size=1000&pretty=1
您需要指定大小查询参数,因为默认值是10
这是完成你想要的查询, (我建议使用Kibana,因为它有助于更好地理解查询)
GET my_index_name/my_type_name/_search
{
"query":{
"match_all":{}
},
size : 20,
from : 3
}
要获得所有的记录,你必须使用“match_all”查询。
Size是你想要获取的记录的数目(一种限制)。 默认情况下,ES只返回10条记录
从就像跳过,跳过前3个记录。
如果您想获取所有的记录,只需使用“total”字段的值 一旦你从Kibana命中这个查询的结果,并使用“大小”。