配置相似性算法elasticsearch

c2e8gylq  于 2021-06-14  发布在  ElasticSearch
关注(0)|答案(3)|浏览(339)

我想改变ElasticSearch的默认相似性算法
我查看了以下链接:https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules-similarity.html#default-底座
但我不知道如何通过restapi或配置文件等设置这个配置。。。
我还查看了以下链接:https://www.elastic.co/guide/en/elasticsearch/guide/master/changing-similarities.html
但在这个环节中,建筑属性时改变了相似类型。

dgjrabp2

dgjrabp21#

keety的答案是正确的,但您也可以尝试使用索引模板。
索引模板允许定义将自动应用于创建的新索引的模板。模板包括设置和Map,以及一个简单的模式模板,用于控制模板是否应用于所创建的索引。
就你而言:

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

定义名为template_1的模板,模板模式为te*。设置和Map将应用于与te*模板匹配的任何索引名称。
有关索引模板的更多信息,可以阅读官方文档。

smdnsysy

smdnsysy2#

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

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

如果索引已经存在,则需要重新生成,因为此时不可能动态更新索引的相似性,如:未解决问题中所述
通过在配置文件中指定index.similarity.default.type的值,可以更改所有索引的默认相似性:
例子:

index.similarity.default.type: BM25
ehxuflar

ehxuflar3#

继keety的回答之后,您现在可以(es6)更改现有索引的相似性,方法是先关闭它,更改相似性,然后再次打开它。从文档中:

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"

相关问题