ElasticSearch - 更新现有索引的相似性度量

时间:2014-10-09 13:53:16

标签: indexing lucene elasticsearch similarity

我有一个现有的索引,默认的ElasticSearch相似性用于所有字段。我想更新这个索引并设置一些其他类型的相似性,比如BM25。我试过的查询是:

curl -XPOST 'http://localhost:9200/myindex/' -d '
{
   "settings":
    {
       "similarity":
        {
          "newSimilarity":
           {
            "type":"BM25"
           }
         }
     }
}'

但是,这会导致IndexAlreadyExists异常崩溃。我也试过

curl -XPUT 'http://localhost:9200/doc/_mapping' -d '
{
  "doc":
  {
    "properties":
     {
       "myField":
        { 
          "type":"string", 
          "term_vector":"with_positions_offsets_payloads", 
          "similarity":"BM25"
         }
      }
   }
 }

这给了我一个MergeMappingException - [合并失败但失败{[mapper [text_content]有不同的相似性。将ignore_conflicts设置为true实际上没有帮助,它会忽略冲突但不会更改映射。

仍然,我想知道是否可以更新此索引中所有字段的相似性度量,而无需重新索引数据。任何建议都会非常感激。

谢谢!

1 个答案:

答案 0 :(得分:2)

目前还没有弹性搜索不允许动态改变相似性。你必须重新索引。 https://github.com/elasticsearch/elasticsearch/issues/4403