Jak dynamicznie zmieniać synonimy dla ElasticSearch
Moje synonimy są przechowywane w bazie danych, a gdy synonimy są zmieniane w bazie danych, chcę zaktualizować dowolne wartości w indeksie, które mogą zostać zmienione w wyniku zmiany synonimu.
Są dwie części tego, o których mogę myśleć. Po pierwsze, ustalenie, które dokumenty mają zostać ponownie zaindeksowane. Po drugie, zastanawiając się, jak powiedzieć ElasticSearch, że synonimy uległy zmianie. Walczę z drugim - mówię ElasticSearch, że synonimy uległy zmianie.
Podobne pytanie zostało zadane - patrzZmień dynamicznie elastyczne synonimy wyszukiwania - ale po przeczytaniu odpowiedzi w tym numerze nie byłem w stanie dowiedzieć się, czego potrzebuję.
Obecnie mój plik konfiguracyjny wygląda następująco:
index :
analysis :
analyzer :
myanalyzer :
filter: [standard, mysynonymfilter]
filter :
mysynonymfilter :
type : synonym
synonyms : synonyms.txt
ignore_case : false
expand : true
format : solr
Moim pomysłem było zrobienie czegoś takiego:
curl -XPUT 'http://127.0.0.1:9200/foo/_settings' -d '
{
"filter" : {
"synonym" : {
"type" : "mysynonymfilter",
"synonyms" : [
"cosmos, universe"
]
}
}
}
'
ale to chyba nie robi tego, co chcę. Oznacza to, że ustawienia indeksu nie są aktualizowane tak daleko, jak mogę to stwierdzić.
Czy to, co próbuję zrobić, jest możliwe? A jeśli tak, to jaki mam pomysł, co robię?
Jestem też całkiem pewien, że udałoby mi się to uruchomić, aktualizując plik synonimów (jeśli muszę użyć pliku), ale jest to trochę bardziej skomplikowane i chciałbym tego uniknąć.
Dziękuję za pomoc, Eric