我在Elasticsearch中有一个小数据库,出于测试目的,我想把所有记录拉回来。我正在尝试使用表单的URL…
http://localhost:9200/foo/_search?pretty=true&q={'matchAll':{''}}
有人能给我你要用来完成这个的URL吗?
我在Elasticsearch中有一个小数据库,出于测试目的,我想把所有记录拉回来。我正在尝试使用表单的URL…
http://localhost:9200/foo/_search?pretty=true&q={'matchAll':{''}}
有人能给我你要用来完成这个的URL吗?
当前回答
这是完成你想要的查询, (我建议使用Kibana,因为它有助于更好地理解查询)
GET my_index_name/my_type_name/_search
{
"query":{
"match_all":{}
},
size : 20,
from : 3
}
要获得所有的记录,你必须使用“match_all”查询。
Size是你想要获取的记录的数目(一种限制)。 默认情况下,ES只返回10条记录
从就像跳过,跳过前3个记录。
如果您想获取所有的记录,只需使用“total”字段的值 一旦你从Kibana命中这个查询的结果,并使用“大小”。
其他回答
注意:答案与Elasticsearch 0.90的旧版本有关。此后发布的版本有了更新的语法。请参考其他可能为您正在寻找的最新答案提供更准确答案的答案。
下面的查询将返回您希望返回的NO_OF_RESULTS ..
curl -XGET 'localhost:9200/foo/_search?size=NO_OF_RESULTS' -d '
{
"query" : {
"match_all" : {}
}
}'
现在,这里的问题是您希望返回所有记录。因此,在编写查询之前,您自然不会知道NO_OF_RESULTS的值。
我们如何知道文档中有多少条记录?只需键入下面的查询
curl -XGET 'localhost:9200/foo/_search' -d '
这会给你一个如下图所示的结果
{
hits" : {
"total" : 2357,
"hits" : [
{
..................
结果总数告诉您文档中有多少条记录可用。这是知道NO_OF RESULTS值的好方法
curl -XGET 'localhost:9200/_search' -d '
搜索所有索引中的所有类型
curl -XGET 'localhost:9200/foo/_search' -d '
搜索foo索引中的所有类型
curl -XGET 'localhost:9200/foo1,foo2/_search' -d '
搜索foo1和foo2索引中的所有类型
curl -XGET 'localhost:9200/f*/_search
搜索以f开头的索引中的所有类型
curl -XGET 'localhost:9200/_all/type1,type2/_search' -d '
在所有索引中搜索user和tweet类型
http://localhost:9200/foo/_search/?size=1000&pretty=1
您需要指定大小查询参数,因为默认值是10
如果你只是添加一些大的数字作为大小,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>"
}
我认为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提供)
官方文档提供了这个问题的答案!你可以在这里找到它。
{
"query": { "match_all": {} },
"size": 1
}
您只需将size(1)替换为您想要看到的结果的数量!