将Elasticsearch从1.6.0升级到更新版本

时间:2017-01-07 21:21:28

标签: java spring elasticsearch spring-boot

上下文:

在尝试将Spring Boot升级到1.4.x(或更新版本)时,我们希望将Elasticsearch从1.6.x升级到2.4.x并遇到以下问题:

  1. 应用程序无法启动时出现错误:script.disable_dynamic is not a supported setting, replace with fine-grained script settings.
  2. 测试用例由于错误而失败:script file extension not supported [groovy]
  3. 解析查询时,测试用例因错误而失败:must specify a script in script fields
  4. 如何解决这些问题?

2 个答案:

答案 0 :(得分:0)

升级到更新版本的Elsaticsearch时出现上述问题的解决方案:

  1. 我们在配置中有script.disable_dynamic = false。在新版本的Elasticsearch中,该设置将被删除,并替换为错误消息中明确说明的细粒度脚本设置。我们用以下内容替换它(您应该查看文档以获得最佳配置):

    script.file = true // we needed this for our script files
    script.inline = false
    script.indexed = false
    
  2. 为了进行测试,我们使用带有几个Groovy脚本的Elasticsearch Cluster Runner。对于新版本的Elasticsearch,您需要向项目显式添加所需的依赖项:

    <dependency>
      <groupId>org.elasticsearch.module</groupId>
      <artifactId>lang-groovy</artifactId>
      <version>${elasticsearch.version}</version>
    </dependency>
    
  3. 您可能需要更新/更改查询以解决问题#3。例如,我们有以下内容:

    {
      ...
      "script_fields" : {
        "channel" : { "file": "channel_calc" },
        "data" : { "file": "data_search_calc_v3" }
      },
      "_source": "*"
      ...
    }
    

    我们必须在file节点中包装script个节点:

    {
      ...
      "script_fields" : {
        "channel" : { "script" : { "file": "channel_calc" } },
        "data" : { "script" : { "file": "data_search_calc_v3" } }
      },
      "_source": "*"
      ...
    }
    
  4. 希望它能帮助他人 欢呼声,

答案 1 :(得分:0)

我建议您使用elasticsearch migration plugin运行群集,它可以让您很好地了解在您要升级时可能会破坏的内容以及您可能希望在群集配置方面要更改的内容。这些可能是您现在遇到的问题,但该插件会为您提供将来可能遇到的问题。