配置相似度算法弹性搜索

时间:2015-05-26 14:10:47

标签: elasticsearch

我想更改弹性搜索的默认相似度算法

我查看了此链接:https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules-similarity.html#default-base

但我不知道如何通过rest api或config file等设置此配置...

我也看过这个链接: https://www.elastic.co/guide/en/elasticsearch/guide/master/changing-similarities.html

但在此链接中更改构建属性时的相似性类型。

3 个答案:

答案 0 :(得分:5)

可以在创建索引时更改索引的默认相似性,如下所示:

curl -XPUT "http://<server>/<index>" -d '
{
  "settings": {
    "similarity": {
      "default": { 
        "type": "BM25"
      }
    }
  }
}

如果索引已经存在,则需要重建,因为目前无法动态更新索引的相似性,如下所述:open issue

您可以通过在配置文件中指定 index.similarity.default.type 的值来更改所有索引的默认相似性:

示例:

index.similarity.default.type: BM25

答案 1 :(得分:2)

Keety的回答是正确的,但您也可以尝试使用索引模板。

索引模板允许定义将自动应用于创建的新索引的模板。模板包括设置和映射,以及一个简单的模式模板,用于控制模板是否应用于创建的索引。

在你的情况下:

curl -XPUT localhost:9200/_template/template_1 -d '
{
  "template" : "te*",
  "settings": {
    "similarity": {
      "default": { 
        "type": "BM25"
      }
    }
  }
}'

定义名为template_1的模板,模板模式为te *。设置和映射将应用于与te *模板匹配的任何索引名称。

有关索引模板的详细信息,请参阅official documentation

答案 2 :(得分:0)

在遵循基蒂的答案之后,您现在可以(ES6)通过先将其关闭,更改相似性并再次将其打开来更改现有索引的相似性。来自docs

curl -X POST "localhost:9200/index/_close"
curl -X PUT "localhost:9200/index/_settings" -H 'Content-Type: application/json' -d'
{
  "index": {
    "similarity": {
      "default": {
        "type": "classic"
      }
    }
  }
}
'
curl -X POST "localhost:9200/index/_open"