在弹性搜索中,如果我有属性为Foo的文档,比如Bar和其他一系列属性。
我需要以这样的方式查询,我得到的结果在下面的方式
FooBar1 baz1 qux1
FooBar1 baz1 qux1
FooBar1 baz1 qux2
FooBar1 baz2 qux1
基本上,我需要doc\u count的所有可用组合。使用该结果,可以说,如果Foo=foo1,Bar=bar1,Baz=baz1,Qux=qux1,则有20个文档/记录
粗暴的方式是,使用术语
聚合内部的术语
聚合(在这种情况下为4次)。
应该有更简单的方法来做到这一点。
提前感谢
你提到4个嵌入式术语的方式很好。
另一种方法是使用单个术语
聚合和脚本
,该脚本将创建一个由您尝试聚合的四个术语组成的假术语,如下所示:
{
"size": 0,
"aggs": {
"combinations": {
"terms": {
"script": "[doc.foo.value, doc.bar.value, doc.baz.value, doc.qux.value].join(',')"
}
}
}
}
注意:确保启用动态脚本才能使用上述脚本聚合。
为了在搜索时节省一些周期,另一个解决方案是在索引时在另一个字段中创建聚合项,然后在单个聚合中使用该聚合项。
编辑:如果结果的顺序很重要,则应根据foo的doc\u计数进行排序
{
"size": 0,
"aggs": {
"primary": {
"terms": {
"field": "foo"
},
"aggs": {
"combinations": {
"terms": {
"script": "[doc.foo.value, doc.bar.value, doc.baz.value, doc.qux.value].join(',')"
}
}
}
}
}
问题内容: 在elasticsearch中,如果我有带有 属性的文档说,还有其他一些属性。 我需要以以下方式查询结果 基本上,我需要doc_count可用的所有组合。使用该结果,可以说 在Foo = foo1,Bar = bar1,Baz = baz1,Qux = qux1的情况下,有20个文档/记录。 粗略的方法是,在聚合内部使用聚合(在这种情况下为4次)。 应该有一些更简单的方法可以做到这一点
问题内容: 我正在使用JPA 2.0 /hibernate验证来验证我的模型。我现在遇到一种情况,必须验证两个字段的组合: 该模型是无效的,如果都和都null和其他有效。 如何使用JPA 2.0 / Hibernate执行这种验证?使用简单的注释,两个吸气剂都必须为非null才能通过验证。 问题答案: 对于多属性验证,应使用类级别的约束。摘自 Bean Validation Sneak Peek第
我有一个弹性搜索中按查询更新的用例。 我把一个医生- null 然而,这一次也失败了。 任何关于使用Where更新可以做什么的想法。提前致谢
如何在elasticsearch中使用与聚合相关的过滤器? 官方文档只给出了过滤器和聚合的小例子,没有对查询dsl进行正式描述——例如,将其与postgres文档进行比较。 通过尝试,我发现以下查询被elasticsearch接受(没有解析错误),但忽略了给定的过滤器: 有些人建议使用查询而不是过滤。但官方文件通常建议对精确值进行过滤。查询的另一个问题是:虽然过滤器提供了和,但查询不提供。 有人能
问题内容: 我第一次使用Postgresql,并且试图在我的网站中创建一个搜索引擎。我有这张桌子: 然后我为表的每个字段创建了一个索引(这是正确的方法吗?或者我可以为所有字段创建一个索引?): 现在,如果我想在每个索引中搜索一个单词,SQL查询是什么? 我尝试了这个,它的工作原理: 是否存在更好的方法来做到这一点?我可以搜索多个吗?我的一个朋友提出了一个解决方案,但这是针对MySQL数据库的: P
我无法编写请求主体来获取弹性搜索中多个字段上的平均聚合。 我有两个字段field1和field2都是“double”数据类型。我能够获取单个字段的平均聚合。 这适用于单个字段: 和两个字段(给出错误) 我收到的错误是“类型为[avg]的聚合器[group\U By\U field1]无法接受子聚合”“无法解析名为[AVGVALUESOFCITEMPIDE]的BaseAgregationBuilde