Próbuję określić najlepszy sposób indeksowania dokumentu w trybie elastycznego wyszukiwania. Mam dokument, Doc, który ma kilka pól:Jak uniknąć przeszukiwania obiektów krzyżowych za pomocą typów zagnieżdżonych w wyszukiwaniu elastycznym
Doc
created_at
updated_at
field_a
field_b
Ale Doc będzie również mieć pola specyficzne dla poszczególnych użytkowników. Na przykład field_x będzie miał wartość "A" dla użytkownika 1, a field_x będzie mieć wartość "B" dla użytkownika 2. Dla każdego dokumentu będzie bardzo ograniczona liczba użytkowników (zwykle 2, do ~ 10). Gdy użytkownik wyszukuje na field_x, musi wyszukać wartość, która do nich należy. Badałem typy zagnieżdżone w ES.
Doc
created_at
updated_at
field_x: [{
user: 1
field_x: A
},{
user: 2
field_x: B
}]
Gdy użytkownik 1 wyszukuje wartość field_x dla wartości "A", dokument ten powinien spowodować trafienie. Jednak nie powinno to być, gdy użytkownik 1 wyszukuje wartość "B".
Jednak according to the docs:
Jednym z problemów podczas indeksowania wewnętrznych obiektów, które pojawiają się kilka razy w dokumencie, że „krzyż obiekt” szukaj mecz nastąpi
Czy istnieje sposób Aby uniknąć tego zachowania z typami zagnieżdżonymi, czy powinienem zbadać inny typ?
Dodatkowe informacje dotyczące wykonywania takich zapytań byłyby bardzo cenne. Po przeczytaniu dokumentów stwierdzono, że zagnieżdżone zapytania nie różnią się zbytnio pod względem wydajności w odniesieniu do zwykłych zapytań. Jeśli ktokolwiek ma prawdziwe doświadczenie, bardzo chciałbym to usłyszeć.
To wielki odpowiedź. Dokładnie to, czego szukałem. Dziękuję za dokładność. – Brad
to stara odpowiedź, [patrz dokumentacja] (https://www.elastic.co/guide/en/elasticsearch/reference/1.7/indices-put-mapping.html) dla późniejszych wersji zmieniających adres URL mapowania na 'http: // localhost: 9200/index/_mapping/type'. –