2014-11-22 69 views
2

我有一個簡單的用戶信息文檔,其中包括一個完成字段。elasticsearch完成字段不刪除

映射:

 "properties" : { 
     "fname" : { "type" : "string" }, 
     "lname" : { "type" : "string" }, 
     "dob" : { "type" : "string" }, 
     "sex" : { "type" : "string" }, 
     "autocomplete" : { 
      "type" :  "completion" 
     } 
     } 

這是我的文檔的例子。

"person" : { 
      "sex"  : "Male", 
      "dob"  : "11/11/2014",   
      "fname"  : "Julie", 
      "lname"  : "Thomas", 
      "autocomplete"  : "Julie Thomas" 
    } 

完整的建議查詢工作得很好。但是當我刪除這個文件時,當我希望這個文件被刪除時,「Julie Thomas」仍然存在完整的建議。

對我在做什麼不正確的建議?

謝謝!

回答

1

我也有這個問題。根據ElasticSearch文檔,需要使用Optimize command從索引中刪除完成建議。這就是他們在the Completion Suggester Docs的底部所說的話。

建議的數據結構可能不會立即反映文檔 上的刪除。您可能需要爲此進行優化。您可以使用only_expunge_deletes = true調用 優化,以滿足刪除 或者調用合併操作。

......那就說了。我這樣做:

curl -XPOST 'http://server:9200/attribute/_optimize?pretty' -d '{ 
    "only_expunge_deletes": true 
}' 

和刪除文檔仍然顯示在完成建議者,即使它不查詢或過濾器顯示出來。

...對不起。沒有太多的答案......它應該是答案,但它可能不適合你,就像它不適合我一樣。

+1

是的,我試着用only_expunge_deletes進行優化。不起作用。我甚至等了30秒,1分鐘和5分鐘......只是如果有更新等待發生。不用找了。就像你一樣! – user3658423 2015-04-14 21:16:03

+0

所以...也許解決這個問題的唯一方法是不使用ElasticSearch。 ;)...或者可能使用索引時間搜索,而不是他們爲此目的而插入的特性? – Cari 2015-04-14 21:23:50

+0

他們有沒有永遠刪掉? – Cari 2015-04-14 21:29:46

1

我們可能必須移動到Index-Time Search,它使用1個字符的ngram並執行正常的_search查詢。

+0

與此相關的問題是ngram極大地增加了索引大小。至少在我的用例中。並不是說我將最大值設置爲20或50,但是我的數據和用例的大小,我們無法用ngram繼續前進。希望你能夠。我正在向es github提出建議者的問題。 – user3658423 2015-04-14 21:32:07

+0

已經有一個問題,一些混蛋把它稱爲一個功能。它將在ES 2.0中準備好https://github.com/elastic/elasticsearch-js/issues/117 – Cari 2015-04-14 21:50:25

+0

此鏈接更好,並且StackOverflow不會讓我編輯該評論。 https://github.com/elastic/elasticsearch/issues/7761 – Cari 2015-04-14 22:00:29