繁体   English   中英

elasticsearch 5.0和索引模板

[英]elasticsearch 5.0 and index template

我正在从elasticsearch 2.x迁移到Elasticsearch 5.0。 在启动过程中,elasticsearch告诉我我无法再在elasticsearch.yml中定义索引属性。 通过elasticsearch 5.0文档,我发现我需要使用索引模板来设置在2.x版中的elasticsearch.yml中设置的默认参数。 就我而言,我有以下设置

index:
  number_of_shards: 1
  number_of_replicas: 1
  similarity:
    default:
      type: BM25
      b:0.0
      k1:1.2
    norm_bm25:
      type: BM25
      b:0.75
      k1:1.2

而是使用和索引模板,我尝试将其转换为

curl -XPUT 'http://localhost:9200/_template/template1' -d '{
  "template" : "*",  
  "settings.index.number_of_replicas" : "1",
  "settings.index.number_of_shards" : "1",
  "settings.index.similarity.default.b" : "0.0",
  "settings.index.similarity.default.k1" : "1.2",
  "settings.index.similarity.default.type" : "BM25",
  "settings.index.similarity.norm_bm25.b" : "0.75",
  "settings.index.similarity.norm_bm25.k1" : "1.2",
  "settings.index.similarity.norm_bm25.type" : "BM25"
}'

我正在使用Elasticsearch.js版本12,并收到错误消息

Error: [illegal_argument_exception] unknown setting [index.similarity]  

我认为这是因为我在模板中以错误的方式设置了相似性。 我的JavaScript代码在升级到Elasticsearch 5.0时保持不变,但是,令人反感的javascript代码导致出现以下错误:

client.indices.create({
  index: indexName,
  body: { settings: { 
          number_of_shards: 1,
          similarity : "norm_bm25"
  } 
},....error stuff)

正确地将我的elasticsearch.yml转换为一组curl操作,使其在Elasticsearch 5.0中工作的正确方法是什么?

编写模板的正确方法是

PUT _template/template1
{
  "template": "*",
  "settings": {
    "number_of_replicas": 1,
    "number_of_shards": 1,
    "index": {
      "similarity": {
        "default": {
          "type": "BM25",
          "b": 0,
          "k": 1.2
        },
        "norm_bm25": {
          "type": "BM25",
          "b": 0.75,
          "k": 1.2
        }
      }
    }
  }
}

您可以参考文档以获取更多信息。 您将在javascript代码中复制相同的设置字典。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM