我已索引包含整数的文档。
这些字段的映射是:
"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仅对文本字段提供突出显示。为什么“整数”字段会突出显示?为什么仅当我使用通配符时才会突出显示? 请让我知道我是否在某处出错