2017-06-06 101 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