Я проиндексировал документ, содержащий целые числа.
Отображение этих полей:
"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. Когдаиспользуется только первая строка запроса, т. е.
{
"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. Когда только вторая строка запросаиспользуется, т. е.
{
"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 обеспечивает подсветку только для текстовых полей.Почему поля Integer подсвечиваются и почему они подсвечиваются только при использовании подстановочного знака?Пожалуйста, дайте мне знать, если я что-то не так