假設我在索引中有一些文檔。其中一個字段是網址。類似...對部分字符串進行排版
{"Url": "Server1/Some/Path/A.doc"},
{"Url": "Server1/Some/OtherPath/B.doc"},
{"Url": "Server1/Some/C.doc"},
{"Url": "Server2/A.doc"},
{"Url": "Server2/Some/Path/B.doc"}
我試圖通過路徑爲我的搜索結果提取計數。這大概是每個分支的查詢。
如:
Initial query:
Server1: 3
Server2: 2
Server1 Query:
Some: 3
Server1/Some Query:
Path: 1
OtherPath: 1
現在我可以看到廣泛2周的方式接近這一點,我不是任忠實球迷。
選項1:腳本。米爾似乎只限於數學運算(至少我無法在文檔中找到字符串拆分),所以這將不得不在Java中。這是可能的,但如果有很多記錄,則感覺會有很多開銷。
選項2:存儲的路徑部分文檔一起...
{"Url": ..., "Parts": ["1|Server1","2|Some","3|Path"]},
{"Url": ..., "Parts": ["1|Server1","2|Some","3|OtherPath"]},
{"Url": ..., "Parts": ["1|Server1","2|Some"]},
{"Url": ..., "Parts": ["1|Server2"]},
{"Url": ..., "Parts": ["1|Server2","2|Some","3|Path"]}
這樣我可以做類似。 Urls starting with 'Server1/Some', facet on parts starting with 3|
。這感覺非常可怕。
這樣做的好方法是什麼?我可以根據需要進行儘可能多的預處理,但需要來自ES的計數,因爲這是重要的查詢結果的計數。
這很好,但如果我想得到(說)每臺服務器的計數器沒有辦法做到這一點,因爲我不知道我需要哪些多值 - 只能轉儲_entire_索引 - 有效地構建整個樹在一個走。因此,我在我的'Parts'建議中加入了一個計數器 – Basic 2013-05-14 16:00:15
不要以爲你需要預處理,只需使用[path hierarchy tokenizer](http://www.elasticsearch.org/guide/reference/index-modules/analysis)/pathhierarchy-tokenizer /),它以索引標記的形式給出了相同的結果。 – javanna 2013-05-14 18:36:17
@基本不知道爲什麼這不好。您是否想要獲得第二個級別,不僅適用於特定服務器,還適用於所有服務器?也許看看[這裏](http://www.springyweb.com/2012/01/hierarchical-faceting-with-elastic.html)。 – javanna 2013-05-14 18:38:14