ElasticSearch(cURL REST API请求)未提供预期结果

时间:2018-06-04 18:21:30

标签: elasticsearch

我使用此命令,该命令应匹配所有文档:

curl -XGET 'localhost:9200/users/_search?pretty' -H 'Content-Type: application/json' -d'
{
  "query": { "match_all": {} }
}
'

我收到了这个回复:

{
  "took" : 0,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 0,
    "max_score" : null,
    "hits" : [ ]
  }
}

但我99.9%肯定我有关于该指数的文件。如果我是对的,为什么不显示比赛?如果我错了,我该如何确认?

1 个答案:

答案 0 :(得分:1)

如果您知道(a)所有文档的存储位置以及(b)服务器认为“用户”所在的位置,您应该能够确定发生了什么。索引实际上是。

对于第一个问题,您可以点击_cat/indices端点以查看每个索引中有多少文档(" docs.count"列):

$curl -XGET 'http://localhost:9200/_cat/indices?v'

health status index                    pri rep docs.count docs.deleted store.size pri.store.size
green  open   query                      1   0          0            0       159b           159b
green  open   some_index                 1   0         54            0     24.7kb         24.7kb
green  open   autocomplete               1   0          0            0       159b           159b
green  open   test_index                 2   0      10065         4824      7.9mb          7.9mb

对于第二个问题,请检查服务器上定义的别名。用户"可能是"用户"已被定义为索引的别名,该索引没有任何文档,或者可能已使用排除所有文档的过滤器在该索引上定义了过滤后的别名(许多别名包含与日期相关的过滤器,将排除非常特定日期范围之外的所有文档)。要检查是否存在别名,可以使用

$curl -XGET 'http://localhost:9200/_aliases?pretty=true'