ElasticSearch无法找到新写入的文档

时间:2017-06-06 16:01:11

标签: elasticsearch indexing

在我的逻辑中,应用程序将文档写入elasticsearch,它有时会尝试从另一个线程读取它。但是当它试图读取它时,查询不会返回任何命中。

我假设在POST请求(插入)中,当我得到201时,表示文档已创建。

我的假设是错的吗?我在这里缺少什么?

感谢您的回复

Neron

编辑:

保存回复{“_index”:“customers”,“_type”:“customers”,“_id”:“123",“_version”:1,“result”:“created”,“_shards”:{“total”:2,“successful”:2,“failed”:0},“created”:true}

查询请求:

{
  "size": 1,
  "from": 0,
  "query": {
    "bool": {
      "must": [
        {
          "match_phrase": {
            "id": "123"
          }
        }
      ]
    }
  }
}

查询 - 响应:

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

一段时间后,它会得到响应,而现在不会发出命中。

2 个答案:

答案 0 :(得分:0)

我认为您正在执行 GET 请求,这就是获取200状态代码的原因。如果是 POST ,则应该是201状态代码。

尝试此查询。

{
  "size": 1,
  "from": 0,
  "query": {
    "bool": {
      "must": [
        {
          "match_phrase": {
            "_id": "123"
          }
        }
      ]
    }
  }
}

答案 1 :(得分:0)

查询请求似乎不正确。你应该尝试“_id”而不是“id”:

    {
     "size": 1,
     "from": 0,
     "query": {
              "bool": {
                       "must": [
                                {
                                 "match_phrase": {
                                 "_id": "123"
                                    }
                                }
                               ]
                     }
             }
    }