Elasticsearch |使用通配符时整数字段的突出显示

时间:2019-02-25 08:15:32

标签: elasticsearch

我已索引包含整数的文档。

这些字段的映射是:

"INTEGER_FIELD": {
  "type": "integer",
  "fields": {
    "keyword": {
      "type": "keyword",
      "ignore_above": 256
    }
  }
}

搜索查询为:

{
  "from": 0,
  "size": 10,
  "query": {
    "bool": {
      "should": [
        {
          "query_string": {
            "query": "\"0\"",
            "fields": [
              "INTEGER_FIELD"
            ],
            "boost": "2000"
          }
        },
        {
          "query_string": {
            "query": "*0*",
            "analyzer": "whitespace",
            "fields": [
              "INTEGER_FIELD"
            ]
          }
        }
      ],
      "minimum_should_match": 1
    }
  },
  "highlight": {
    "type": "unified",
    "fields": {
      "INTEGER_FIELD": {}
    }
  }
}

我的疑问是:

1。。使用以上查询时,“ INTEGER_FIELD”会突出显示, 获取的突出显示结果是:

  "highlight": {
    "INTEGER_FIELD": [
      "<em>0</em>"
    ]
  }

2。。仅使用第一个query_string时,

{
  "from": 0,
  "size": 10,
  "query": {
    "bool": {
      "should": [
        {
          "query_string": {
            "query": "\"0\"",
            "fields": [
              "INTEGER_FIELD"
            ],
            "boost": "2000"
          }
        }
      ],
      "minimum_should_match": 1
    }
  },
  "highlight": {
    "type": "unified",
    "fields": {
      "INTEGER_FIELD": {}
    }
  }
}

已检索/获取文档,但没有突出显示。

3。。当仅使用第二个query_string时,

{
  "from": 0,
  "size": 10,
  "query": {
    "bool": {
      "should": [
        {
          "query_string": {
            "query": "*0*",
            "analyzer": "whitespace",
            "fields": [
              "INTEGER_FIELD"
            ]
          }
        }
      ],
      "minimum_should_match": 1
    }
  },
  "highlight": {
    "type": "unified",
    "fields": {
      "INTEGER_FIELD": {}
    }
  }
}

未提取文档,因此未突出显示

我无法理解此处突出显示的行为。 据我了解,Elasticsearch仅对文本字段提供突出显示。为什么“整数”字段会突出显示?为什么仅当我使用通配符时才会突出显示? 请让我知道我是否在某处出错

0 个答案:

没有答案