2017-06-06 63 views
0

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

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

我的假设错了吗?我在这里错过了什么?

THX您的答复

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":[]}} 

经过一段时间,它得到的响应和命中不是现在。

回答

0

我认为你在做GET请求,这就是为什么要获得200状态码。如果是POST那么通话应该是201状态码。

试试这个查询。

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

thx对于响应,但我认为情况并非如此。插入不是问题,但我认为当我获得成功响应时,我也应该能够查询并获取它。但它不会发生 – Neron

+0

当您进行GET时,您是否可以从elasticsearch共享一条记录,并且还可以分享您正在尝试使用 –

+0

的查询,请参阅编辑! @ vinod-vh – Neron

0

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

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

我有一个字段也作为id的名称,所以查询是正确的 – Neron