我是弹性搜索并尝试形成查询的新手。我从弹性存储中提取信息时遇到了一些问题。下面,我正在尝试在弹性搜索查询中进行分组。.
可以说我有以下数据:
[{
"a" : {
"b" : "xxx",
"c" : "yyy"
},
"l" : {
"m" : "zzz",
"n" : "sss"
}
},
{
"a" : {
"b" : "xxx",
"c" : "qqq"
},
"l" : {
"m" : "ttt",
"n" : "jjj"
}
}
]
我想在对象“ a”中显示键“ b”的所有值为“ xxx”的行。
在上面,我有两行符合我的需要。所以我想展示以上两个。这意味着它是“ a.b分组”
如何实现该弹性搜索查询?由于我要分组的键是嵌套键,因此在形成查询时遇到了麻烦。
任何建议将不胜感激。
编辑1:
我正在寻找的不仅仅是“ a.b”键的值为“ xxx”。我想做一个小组。因此,如果在“ a.b”下有两个记录,值是“ xxx”,在“ a.b”下还有两个记录,值是“ kkk”,我希望将它们视为两个组。
在这种情况下,应该是两个json对象,每个对象都包含其特定的组结果。
类似以下内容:
{
{
{
"a" : {
"b" : "xxx",
"c" : "yyy"
},
"l" : {
"m" : "zzz",
"n" : "sss"
}
},
{
"a" : {
"b" : "xxx",
"c" : "qqq"
},
"l" : {
"m" : "ttt",
"n" : "jjj"
}
}
},
{
{
"a" : {
"b" : "kkk",
"c" : "..."
},
"l" : {
"m" : "___",
"n" : "---"
}
},
{
"a" : {
"b" : "kkk",
"c" : "..."
},
"l" : {
"m" : "___",
"n" : "---"
}
}
}
}
答案 0 :(得分:0)
这就是我所做的。
我的聚合链具有以下顺序
Nested-> Terms Aggregation-> Reverse Nested-> Top Hits
箭头全部表示子聚合。
def create
@schedule = current_user.schedules.build(schedule_params)
@schedule.add_rooms # <-- Add this line
if @schedule.save
flash.now[:success] = "Draft Schedule Saved! Now Confirm or Edit."
render :show
else
render :new
end
这将使您能够按预期执行preg_replace
。另请注意,我假设字段$maxprice = preg_replace('/[^\d]+/', '', $maxprice);
的类型为keyword。
还请注意,[^...]+
仅显示前10个文档,如果希望查看所有文档,则可以增加数量。
让我知道这是否有帮助!