代码之家  ›  专栏  ›  技术社区  ›  BBaysinger alex

ElasticSearch(curl rest api请求)未给出预期结果

  •  0
  • BBaysinger alex  · 技术社区  · 6 年前

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

    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 回复  |  直到 6 年前
        1
  •  1
  •   Jason Rosendale    6 年前

    如果您知道(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'