假设我在索引中有一些文档。其中一个字段是 url。就像是...
{"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
现在我可以广泛地看到两种方法来解决这个问题,我不是这两种方法的忠实粉丝。
选项 1:脚本。mvel 似乎仅限于数学运算(至少我在文档中找不到字符串拆分)所以这必须在 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 的计数,因为它是重要的查询结果计数。