Próbuję użyć ElasticSearch do analizy - w szczególności do śledzenia "najwyższej zawartości" dla ręcznie zwijanego CMS Rails. Wymóg jest nieco bardziej skomplikowany niż utrzymywanie licznika dla każdej części treści. W tej chwili nie będę w stanie zagłębiać się w problem, ponieważ nie mogę sprawić, że nawet podstawy będą działać.Problemy z liczbą facetów
Mój problem polega na tym, że używam faset i liczba ta nie jest taka, jak się spodziewam. Na przykład:
Zapytanie:
{"facets":{"el_ids":{"terms":{"field":"el_id","size":1,"all_terms":false,"order":"count"}}}}
Wynik:
{"el_ids":{"_type":"terms","missing":0,"total":16672,"other":16657,"terms":[{"term":"quis","count":15}]}}
Ok, super, kawałek treści o identyfikatorze "Quis" miał 15 trafień, a od order
jest count
, to powinien bądź moim najlepszym materiałem. Teraz dostajemy 5 najlepszych materiałów.
Zapytanie:
{"facets":{"el_ids":{"terms":{"field":"el_id","size":5,"all_terms":false,"order":"count"}}}}
Wynik (tylko aspekt):
[
{"term":"qgz9","count":26},
{"term":"quis","count":15},
{"term":"hnqn","count":15},
{"term":"higp","count":15},
{"term":"csns","count":15}
]
Huh? Więc kawałek treści w/id "qgz9" miał więcej trafień z 26? Dlaczego nie był to najlepszy wynik w pierwszym zapytaniu?
Ok, pozwala uzyskać 100 najlepszych teraz.
Zapytanie:
{"facets":{"el_ids":{"terms":{"field":"el_id","size":100,"all_terms":false,"order":"count"}}}}
Wyniki (tylko facet):
[
{"term":"qgz9","count":43},
{"term":"difc","count":37},
{"term":"zryp","count":31},
{"term":"u65r","count":31},
{"term":"sxsi","count":31},
...
]
Więc teraz "qgz9" ma 43 trafień zamiast 26? Jak to możliwe? Mogę was zapewnić, że nic nie dzieje się w tle, modyfikując indeks. Jeśli powtórzę te zapytania, otrzymam te same wyniki.
Powtarzam ten proces zwiększania rozmiaru wyniku, liczby się zmieniają, a nowe identyfikatory treści pojawiają się u góry. Czy ktoś może mi wyjaśnić, co robię źle lub gdzie moje zrozumienie tego, jak to działa, jest wadliwe?
To nadal nie jest dobry sposób, aby to osiągnąć. Sharding jest bardzo ważną cechą Elasticsearch. Możesz stracić dużo wydajności, jeśli weźmiesz pod uwagę tylko 1 fragment. – eliasah