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

questionAnswers(4)

yourAnswerToTheQuestion