Я использую elasticsearch 7.0.0
.
Я пытаюсь работать на synonyms
с этой конфигурацией при создании index
.
{
"settings": {
"index": {
"analysis": {
"analyzer": {
"synonym": {
"tokenizer": "whitespace",
"filter": [
"synonym"
]
}
},
"filter": {
"synonym": {
"type": "synonym",
"synonyms_path": "synonyms.txt"
}
}
}
}
},
"mappings": {
"properties": {
"address.state": {
"type": "text",
"analyzer": "synonym"
},
"location": {
"type": "geo_point"
}
}
}
}
Вот документ, вставленный в указатель:
{
"name": "Berry's Burritos",
"description": "Best burritos in New York",
"address": {
"street": "230 W 4th St",
"city": "New York",
"state": "NY",
"zip": "10014"
},
"location": [
40.7543385,
-73.976313
],
"tags": [
"mexican",
"tacos",
"burritos"
],
"rating": "4.3"
}
Также содержание в synonyms.txt
:
ny, new york, big apple
Когда я пытался что-то искать в свойстве address.state
, я получал empty
результат.
Вот запрос:
{
"query": {
"bool": {
"filter": {
"range": {
"rating": {
"gte": 4
}
}
},
"must": {
"match": {
"address.state": "ny"
}
}
}
}
}
Даже с ny
(как есть: без синонима) в запросе, результат пуст.
Раньше, когда я создавал индекс без mappings
, запрос использовался для получения результата, кроме синонимов.
Но теперь с mappings
результат пустой, хотя термин присутствует.
Этот запрос работает, хотя:
{
"запрос": {
"Строка запроса": {
"запрос": "тако",
"поля": [
«метка»
]
}
}
}
Я посмотрел и исследовал множество статей / учебных пособий и дошел до этого.
Что мне здесь не хватает сейчас?