我在Elasticsearch中有一个小数据库,出于测试目的,我想把所有记录拉回来。我正在尝试使用表单的URL…

http://localhost:9200/foo/_search?pretty=true&q={'matchAll':{''}}

有人能给我你要用来完成这个的URL吗?


当前回答

通过提供大小,elasticSearch将返回的最大结果是10000

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" : "" 
}'

其他回答

我认为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提供)

注意:答案与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类型

你可以使用_count API来获取size参数的值:

http://localhost:9200/foo/_count?q=<your query>

返回{count:X,…}。提取值'X',然后执行实际查询:

http://localhost:9200/foo/_search?q=<your query>&size=X

Size参数将显示的命中数从默认值(10)增加到500。

http://localhost:9200/[indexName]/_search?pretty=true&size=500&q=*:*

将from逐步更改为获取所有数据。

http://localhost:9200/[indexName]/_search?size=500&from=0

调整大小的最佳方法是在URL前面使用size=number

Curl -XGET "http://localhost:9200/logstash-*/_search?size=50&pretty"

注:此尺寸可定义的最大值为10000。对于任何高于10,000的值,它希望您使用滚动函数,这将最大限度地减少对性能的影响。