我試圖使用ElasticSearch進行分析 - 特別是跟蹤手動導軌Rails CMS的「頂級內容」。這個要求比爲每件內容保留一個計數器要複雜得多。我現在不會深入到問題的深處,因爲我看起來連基本工作都看不到。與方面計數問題
我的問題是這樣的:我使用方面和計數是不是我期望他們是。例如:
查詢:
{"facets":{"el_ids":{"terms":{"field":"el_id","size":1,"all_terms":false,"order":"count"}}}}
結果:
{"el_ids":{"_type":"terms","missing":0,"total":16672,"other":16657,"terms":[{"term":"quis","count":15}]}}
好,太好了,這塊ID爲 「QUIS」 有15支安打,因爲order
含量count
,它應該成爲我的首要內容。現在讓我們獲得前5個內容。
查詢:
{"facets":{"el_ids":{"terms":{"field":"el_id","size":5,"all_terms":false,"order":"count"}}}}
結果(只是面):
[
{"term":"qgz9","count":26},
{"term":"quis","count":15},
{"term":"hnqn","count":15},
{"term":"higp","count":15},
{"term":"csns","count":15}
]
咦?那麼這張有w/id「qgz9」的內容有26個更多的點擊率?爲什麼它不是第一個查詢中的最重要結果?
好吧,讓我們現在得到前100名。
查詢:
{"facets":{"el_ids":{"terms":{"field":"el_id","size":100,"all_terms":false,"order":"count"}}}}
結果(只是面):
[
{"term":"qgz9","count":43},
{"term":"difc","count":37},
{"term":"zryp","count":31},
{"term":"u65r","count":31},
{"term":"sxsi","count":31},
...
]
所以現在 「qgz9」 擁有43個安打,而不是26?怎麼可能?我可以向你保證在修改索引的後臺沒有任何事情發生。如果我重複這些查詢,我會得到相同的結果。
當我重複這個增加結果大小的過程時,計數不斷變化,新的內容ID出現在頂部。有人能向我解釋我做錯了什麼,或者我對這種工作方式的理解有缺陷嗎?
這仍然不是實現這一目標的好方法。分片是Elasticsearch的一個非常重要的特性。如果你只考慮1個分片,你可能會失去很多性能。 – eliasah 2014-08-25 07:47:43