У меня есть два файла синонимов с несколькими тысячами строк, вот пример, вызывающий проблему:
en_synonyms
файл:
cereal, semolina, wheat
fr_synonyms
файл:
ble, cereale, wheat
Это ошибка, которую я получил:
{
"error": {
"root_cause": [
{
"type": "illegal_argument_exception",
"reason": "failed to build synonyms"
}
],
"type": "illegal_argument_exception",
"reason": "failed to build synonyms",
"caused_by": {
"type": "parse_exception",
"reason": "Invalid synonym rule at line 1",
"caused_by": {
"type": "illegal_argument_exception",
"reason": "term: wheat analyzed to a token (cereal) with position increment != 1 (got: 0)"
}
}
},
"status": 400
}
Отображение, которое я использовал:
PUT wheat_syn
{
"mappings": {
"wheat": {
"properties": {
"description": {
"type": "text",
"fields": {
"synonyms": {
"type": "text",
"analyzer": "syn_text"
},
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
},
"settings": {
"number_of_shards": 1,
"analysis": {
"filter": {
"en_synonyms": {
"type": "synonym",
"tokenizer": "keyword",
"synonyms_path" : "analysis/en_synonyms.txt"
},
"fr_synonyms": {
"type": "synonym",
"tokenizer": "keyword",
"synonyms_path" : "analysis/fr_synonyms.txt"
}
},
"analyzer": {
"syn_text": {
"tokenizer": "standard",
"filter": ["lowercase", "en_synonyms", "fr_synonyms" ]
}
}
}
}
}
Оба файла содержат термин wheat
, когда я удаляю его из одного изих, индекс создан успешно.
Я думал о объединении двух файлов, поэтому результат будет:
cereal, semolina, wheat, ble, cereale
Но в моем случае я не могу сделать это вручную, так как онзаймет много времени (я буду искать способ сделать это программно, в зависимости от ответа на этот вопрос)