自从将ElasticSearch从1.3x升级到2.3x后,子类型的脚本不再有效

时间:2016-04-22 12:13:56

标签: elasticsearch

下面的查询适用于我的ES 1.3.4索引,但不在我的ES 2.3.0索引上,知道为什么停止工作或我如何修复它?我的索引在product和product_region之间具有父子关系。

它给出的错误是:

No field found for [product_region.mask] in mapping with types [product]

查询的相关部分是:

"query": {
    "filtered": {
      "query": {
        "bool": {
          "must": [
            {
              "bool": {
                "should": [
                  {
                    "wildcard": {
                      "product_number": {
                        "value": "*999*"
                      }
                    }
                  },
                  {
                    "wildcard": {
                      "product_code": {
                        "value": "*999*"
                      }
                    }
                  }
                ]
              }
            }
          ]
        }
      },
      "filter": {
        "or": [
          {
            "has_child": {
              "type": "product_region",
              "query": {
                "constant_score": {
                  "filter": {
                    "and": [
                      {
                        "missing": {
                          "field": "ref_val1"
                        }
                      },
                      {
                        "script": {
                          "script": "(doc['product_region.mask'].value & 65535) > 0"
                        }
                      },
                      {
                        "or": [
                          {

1 个答案:

答案 0 :(得分:0)

事实证明我需要更改“script”:“(doc ['product_region.mask']。value& 65535)> 0”to“script”:“(doc ['mask']。value& ; 65535)> 0“