我有一个现有的索引,默认的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实际上没有帮助,它会忽略冲突但不会更改映射。
仍然,我想知道是否可以更新此索引中所有字段的相似性度量,而无需重新索引数据。任何建议都会非常感激。
谢谢!
答案 0 :(得分:2)
目前还没有弹性搜索不允许动态改变相似性。你必须重新索引。 https://github.com/elasticsearch/elasticsearch/issues/4403