美文网首页
elasticsearch2.4.6版本存在的bug

elasticsearch2.4.6版本存在的bug

作者: 十五倍压枪 | 来源:发表于2018-06-17 22:47 被阅读25次

    问题背景

    一个查询语句在测试集群可以正常跑,但是在本地集群无法正常跑的问题
    查询语句如下

    {
      "from": 0,
      "size": 10,
      "query": {
        "bool": {
          "must_not": {
            "term": {
              "delete": 1
            }
          },
          "should": {
            "dis_max": {
              "queries": [
                {
                  "match": {
                    "answer": {
                      "query": [
                        "聊天"
                      ],
                      "type": "boolean"
                    }
                  }
                }
              ]
            }
          }
        }
      }
    }
    

    查询上面语句在本地集群会得到如下错误

      "error" : {
        "root_cause" : [ {
          "type" : "parsing_exception",
          "reason" : "[match] unknown token [START_ARRAY] after [query]",
          "line" : 6,
          "col" : 17
        } ],
        "type" : "parsing_exception",
        "reason" : "[match] unknown token [START_ARRAY] after [query]",
        "line" : 6,
        "col" : 17
      },
      "status" : 400
    }
    

    主要的意思就是match后面不能跟数组形式查询

    问题排查

    排查过众多语法因素后认为应该是外力,测试集群版本2.3.5,本地集群版本2.4.6
    上elasticsearch的github中搜索issue看有没有类似的问题,否则我就自己提一个了。
    然后看到一个issue提到了该问题,上地址
    github该问题讨论
    确实是bug

    解决方式

    那就只能回调回2.3.5版本和线上保持一致
    这里吹一波docker,只需要改配置文件一下,总共不到20s从2.4.6切换成为2.3.5版本
    不过这也是因为是小版本切换,底层使用的lucene版本一样,索引可以无缝切换
    这里放一个我之前写的如何用docker快速建立es环境的博客
    使用docker-compose构建elasticsearch集群
    将文中配置文件改为2.3.5即可完成

    相关文章

      网友评论

          本文标题:elasticsearch2.4.6版本存在的bug

          本文链接:https://www.haomeiwen.com/subject/gkrgeftx.html