术语包含方括号时,嵌套内部匹配中没有亮点

时间:2018-10-18 16:46:12

标签: elasticsearch elasticsearch-5

我有一个带有嵌套字段的文档,但是在突出显示工作时遇到了一些麻烦。当我的字词查询包含尖括号(<>)时,为什么我没有突出显示?

我们在嵌套映射中有两个包含相似数据的字段:

"value": {
  "type": "keyword",
  "normalizer": "lowercase"
},
"valueWithQualifier": {
  "type": "keyword",
  "normalizer": "lowercase"
}

lowercase规范化器使用过滤器["asciifolding", "lowercase"]

value通常是字母数字字符串,但是valueWithQualifier的格式为value<qualifier>。当我在value字段上执行术语查询时,通常会返回突出显示信息。当我在valueWithQualifier字段上执行字词查询时,我永远都不会得到突出显示的信息。

{
  "query": {
    "nested": {
      "path": "assoc",
      "query": {
        "term": {
          "assoc.value": "123abc"
        }
      },
      "inner_hits": {
        "highlight": {
          "fields": {
            "assoc.value*": {}
          }
        }
      }
    }
  }
}

这将返回带有高亮显示的内部匹配:

"highlight": {
  "assoc.value": [
    "<em>123abc</em>"
  ]
}

但是,此查询返回inner_hit,但不突出显示:

{
  "query": {
    "nested": {
      "path": "assoc",
      "query": {
        "term": {
          "assoc.valueWithQualifier": "123abc<qual>"
        }
      },
      "inner_hits": {
        "highlight": {
          "fields": {
            "assoc.value*": {}
          }
        }
      }
    }
  }
}

但是,这确实会返回突出显示(但出于效率考虑,我宁愿使用术语查询):

{
  "query": {
    "nested": {
      "path": "assoc",
      "query": {
        "prefix": {
          "assoc.valueWithQualifier": "123abc"
        }
      },
      "inner_hits": {
        "highlight": {
          "fields": {
            "assoc.value*": {}
          }
        }
      }
    }
  }
}

"highlight": {
  "assoc.valueWithQualifier": [
    "<em>123abc<qual></em>"
  ]
}

在有人问之前,我尝试将"encoder": "html"添加到突出显示中。

1 个答案:

答案 0 :(得分:0)

事实证明,这是ES 6.2(https://github.com/elastic/elasticsearch/pull/27604)中修复的错误。