Выделите один символ
Привет в Elastic Search 6.1.3 У меня проблема с выделением одного символа - он отлично работает из 2 символов. Это мой индекс:
{
"users": {
"aliases": {
},
"mappings": {
"userview": {
"properties": {
"FullName": {
"type": "text",
"fields": {
"highlight": {
"type": "text",
"boost": 2.0,
"analyzer": "highlight"
}
},
"analyzer": "highlight"
}
}
}
},
"settings": {
"index": {
"number_of_shards": "5",
"provided_name": "users",
"max_result_window": "30000",
"creation_date": "1521794188335",
"analysis": {
"analyzer": {
"highlight": {
"filter": ["lowercase",
"standard"],
"char_filter": ["specialCharsFilter"],
"type": "custom",
"tokenizer": "highlight"
}
},
"char_filter": {
"specialCharsFilter": {
"type": "mapping",
"mappings": ["& => \\u0020",
"- => \\u0020",
". => \\u0020"]
}
},
"tokenizer": {
"highlight": {
"token_chars": ["digit",
"letter",
"punctuation",
"symbol"],
"min_gram": "1",
"type": "edge_ngram",
"max_gram": "30"
}
}
},
"number_of_replicas": "1",
"uuid": "oPaiUU5yQoWhD5_CNvVl4A",
"version": {
"created": "6010399"
}
}
}
}}
и сам запрос:
GET /users/_search
{
"_source": "FullName.highlight",
"from": 0,
"size": 10,
"sort": [{
"NameSupplier.keyword": {
"order": "asc"
}
}],
"highlight": {
"pre_tags": ["["],
"post_tags": ["]"],
"fields": {
"FullName.highlight": {
"type": "plain",
"require_field_match": false
}
}
},
"query": {
"bool": {
"must": [{
"match_phrase_prefix": {
"FullName.highlight": {
"query": "c"
}
}
}]
}
}
}
это дает мне результат:
"highlight": {
"FullName.highlight": [
"Something [Cola]"
]
}
поэтому он будет соответствовать полному слову Cola вместо [c], но когда я запрашиваю:
"match_phrase_prefix": {
"FullName.highlight": {
"query": "co"
}
}
результаты верны - Something [Co]la. Я не уверен, что я сделал не так, когда я пытаюсь проанализировать это поле, используя /_analyze и слово Cola, это дает мне также один "c" в качестве одного из ответов. Может быть, у кого-то была такая же проблема и знаете, как ее исправить?