elasticsearch完成字段不删除

时间:2014-11-22 06:05:36

标签: javascript 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”的完整建议。

有关我的错误行为的任何建议吗?

谢谢!

3 个答案:

答案 0 :(得分: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 :(得分:1)

我们可能必须转到Index-Time Search,它使用1个字符的ngram并执行普通的_search查询。

答案 2 :(得分:0)

向数据添加一个ID字段,然后对该ID字段进行引用以进行删除和更新,这对我们来说是有效的

"index":{"_index":"esIndex","_type":"document","_id":"23d68f060118fbeee699d14eff044a1f"}}
 {"text":"vision zero","id":"23d68f060118fbeee699d14eff044a1f","suggest":{"input":"vision zero","payload":{"entity_id":"23d68f060118fbeee699d14eff044a1f"}},"type":"Content"}

类似于上面的批量查询数据,请注意数据中的 id 字段。如果我们不放置它,则会遇到删除文档后仍然显示在建议中的相同问题。