我有类似于我想在elasticsearch中索引的文件路径的数据。 (基本上由分隔符分隔的令牌列表)
Ex data:
a/b/c/d/e
a/b/c/
a/m/n
x/y/z
一旦我编入索引,我应该能够查询以获得给定令牌的直接子节点,如下所示。
For prefix of a, immediate children are [b, m]
For prefix of x, immediate children are [y]
Also tokens at root would be [a,x]
答案 0 :(得分:1)
您是否考虑过亲子关系?
索引,您可以使用以下
进行查询{
"query": {
"has_parent": {
}
}
{
"query": {
"has_child": {
}
}
答案 1 :(得分:1)
我认为在Elasticsearch中没有开箱即用的方法,因此您需要自己对层次结构进行建模。 根据您的示例,一种方法:
索引数据
POST index/type/id1
{
"a":["b","c","d","e"]
}
POST index/type/id2
{
"a":["b","c"]
}
POST index/type/id3
{
"a":["m","n"]
}
POST index/type/id4
{
"x":["y","z"]
}
查询'a'儿童
POST index/type/_search
{
"size":0,
"aggs": {
"paths": {
"terms": {
"field": "a",
"size": 0
}
}
}
在root用户查询令牌。在响应中查找没有“_”
的键POST index/type/_search
{
"size":0,
"aggs": {
"Field names": {
"terms": {
"field": "_field_names",
"size": 0
}
}
}
}
希望我能帮到你! :)