Ich versuche, ElasticSearch für Analysen zu verwenden - speziell um "Top-Inhalte" für hand-rolled Rails CMS zu verfolgen. Die Anforderung ist ein wenig komplizierter, als einen Zähler für jedes Stück Inhalt zu führen. Ich werde jetzt nicht in die Tiefe des Problems kommen, da ich nicht einmal die Grundlagen zum Laufen bringen kann.Probleme mit Facetten zählen
Mein Problem ist das: Ich benutze Facetten und die Zählungen sind nicht, was ich von ihnen erwarte. Zum Beispiel:
Abfrage:
{"facets":{"el_ids":{"terms":{"field":"el_id","size":1,"all_terms":false,"order":"count"}}}}
Ergebnis:
{"el_ids":{"_type":"terms","missing":0,"total":16672,"other":16657,"terms":[{"term":"quis","count":15}]}}
Ok, super, das Stück von Inhalten mit der ID "Quis" 15 Hits hatte und seit den order
count
ist, sollte es sei mein oberstes Stück Inhalt. Jetzt können wir die 5 besten Teile des Inhalts bekommen.
Abfrage:
{"facets":{"el_ids":{"terms":{"field":"el_id","size":5,"all_terms":false,"order":"count"}}}}
Ergebnis (nur die Facette):
[
{"term":"qgz9","count":26},
{"term":"quis","count":15},
{"term":"hnqn","count":15},
{"term":"higp","count":15},
{"term":"csns","count":15}
]
Huh? Also hatte das Stück Inhalt w/id "qgz9" mehr Treffer mit 26? Warum war es nicht das beste Ergebnis in der ersten Abfrage?
Ok, lass uns jetzt die Top 100 bekommen.
Abfrage:
{"facets":{"el_ids":{"terms":{"field":"el_id","size":100,"all_terms":false,"order":"count"}}}}
Ergebnisse (nur die Facette):
[
{"term":"qgz9","count":43},
{"term":"difc","count":37},
{"term":"zryp","count":31},
{"term":"u65r","count":31},
{"term":"sxsi","count":31},
...
]
So, jetzt "qgz9" hat 43 Treffer statt 26? Wie kann das sein? Ich kann Ihnen versichern, dass im Hintergrund nichts passiert, was den Index verändert. Wenn ich diese Abfragen wiederhole, bekomme ich die gleichen Ergebnisse.
Während ich diesen Vorgang der Erhöhung der Ergebnisgröße wiederhole, ändern sich die Zählwerte weiter und neue Inhalts-IDs werden oben angezeigt. Kann mir jemand erklären, was ich falsch mache oder wo mein Verständnis davon, wie das funktioniert, fehlerhaft ist?
Dies ist immer noch nicht der gute Weg, das zu erreichen. Das Sharding ist ein sehr wichtiges Merkmal von Elasticsearch. Sie können viel Leistung verlieren, wenn Sie nur einen Splitter in Betracht ziehen. – eliasah