我有一个带有嵌套数据的ES索引,它是这样映射的
"mappings": {
"voertuig": {
"properties": {
"vestiging": {
"properties": {
"name_dtc": {
"type": "string",
"fields": {
"raw": {
"index": "not_analyzed",
"type": "string"
}
}
},
},
"type": "nested"
},
"accessoires": {
"properties": {
"name": {
"type": "string",
"fields": {
"raw": {
"index": "not_analyzed",
"type": "string"
}
}
}
},
"type": "nested"
}
}
}
}
我想创建一个对两个(原始)值进行筛选的查询。我可以创建一个筛选器,对这些值之一进行筛选,如下所示:
{
"body": {
"post_filter": {
"nested": {
"filter": {
"bool": {
"must": [
{
"term": {
"vestiging.name_dtc.raw": "Location X"
}
}
]
}
},
"path": "vestiging"
}
},
"query": {
"match_all": { }
}
},
"index": "ocm",
"type": "voertuig"
}
然而,我需要的是这样的东西:
{
"body": {
"post_filter": {
"nested": [
{
"filter": {
"bool": {
"must": [
{
"term": {
"accessoires.name.raw": "Climate Control"
}
}
]
}
},
"path": "opties"
},
{
"filter": {
"bool": {
"must": [
{
"term": {
"vestiging.name_dtc.raw": "Location X"
}
}
]
}
},
"path": "vestiging"
}
]
},
"query": {
"filtered": {
"filter": {
"term": {
"key": "33e75ff09dd6"
}
},
"query": []
}
}
},
"index": "ocm",
"type": "voertuig"
}
第一个查询有效,第二个查询引发错误:
嵌套:QueryParsingException[[ocm][nested]筛选器不支持[null]];
如何创建匹配多个路径中的字段的筛选器?
那么这个呢:
{
"query" : {
"filtered" : {
"filter" : {
"bool" : {
"must" : [
{
"nested": {
"filter": {
"term": {
"accessoires.name.raw": "Climate Control"
}
},
"path": "accessoires"
}
},
{
"nested": {
"filter": {
"term": {
"vestiging.name_dtc.raw": "Location X"
}
},
"path": "vestiging"
}
},
{
"term": {
"key": "33e75ff09dd6"
}
}
]
}
}
}
}
}
我认为您所遇到的问题是由于不正确地使用了嵌套过滤器,尽管从异常消息中得到确切的问题有点困难。实际上,如果要组合两个嵌套筛选器,必须使用bool
或和
筛选器对它们进行分组。
为了更小的帖子,我已经减少了相当多的查询。我没有post_filter
,因为您的示例中没有任何聚合。我将内部bool筛选器替换为它们所具有的单个术语筛选器,并将其标记在附加键(term
)筛选器上。但是,您可以继续使用查询结构,并根据需要展开它,主修复解决了两个嵌套筛选器是如何放在一起的。
问题内容: 我有一个这样的文档模型: 一个客户可以有0个,1个或多个订单,一个订单可以有0个,1个或多个orderLines (这是我为这个问题创建的模型,因为我认为这是每个人都可以理解的数据,因此,如果发现任何错误,请让我知道,但不要让他们分散我的实际问题) 我想使用NEST创建一个查询,该查询选择一个(或所有)具有customer.id特定值的客户,但前提是他们至少具有一个具有特定articl
问题内容: TL; DR -我该如何检查是否 之一的 和 所有的 嵌套数组满足规定的标准是什么? 我有一个。每个对象都有一个嵌套对象数组,这些对象本身都有一个嵌套对象列表。我需要对所有文档中 至少一个嵌套对象匹配的文档执行过滤器。当我说的比赛,我的意思是 所有 的嵌套对象的对象以某种方式相匹配。这是一个示例映射,以供参考; 如果文档没有/ 对象,则认为是匹配的。但是,更糟糕的是,内部对象需要考虑以
问题内容: 我有带有嵌套字段的文档,如下所示: 嵌套字段的映射如下所示: 在切换到elasticsearch 2之前,我有一个带有aggs的查询,该查询计算了没有结果的文档。这是查询的聚合部分: 现在我切换到elasticserach 2,它只计算所有文档。我已经尝试过其他操作,例如计算所有文档和计算结果,以便可以减去结果,但是 总是0 如何正确过滤/计数嵌套字段? 问题答案: 如果您要计算产生结
问题内容: 我一直在尝试搜索包含嵌套字段的文档。我创建了这样的嵌套映射: 我的搜索如下所示: 但是我收到此错误消息: 编辑 我仍然收到此错误。我正在通过Java执行此操作,因此这是我要创建的文档: 像这样创建索引: 我认为我可能对文档编制了错误的索引。 问题答案: TLDR:输入您的嵌套类型。 假设我们有一个普通类型,并且嵌套了另一个类型: 该行是分配给的嵌套查询所必需的,如下所示: 该行似乎仅在
我有一个电影模型和一个搜索页面,有一个电影流派方面。可以在搜索页面上的每个方面附近选择一个复选框。我将选中的方面术语列表传递给控制器,我希望筛选电影集合只包括那些用复选框选择了类型的电影。 我的带有索引和搜索定义的模型是: 我不确定这部分应该怎么改写: 稍后,我将把流派列表或流派ID作为参数传递,我需要对它们进行筛选。 它过滤到有‘类型1'或’类型2'或‘类型3'的电影,我需要这些类型和逻辑。 我
问题内容: 我正在尝试过滤存储桶中的嵌套聚合。 对应: 索引数据: 我正在使用此查询和聚合定义 我从聚合结果中得到的是: 我在筛选存储桶列表时遇到了麻烦,因为它们只能提供所提供的事件ID,因此结果应类似于: 问题答案: 您快到了,只需要在聚合中添加过滤器即可,如下所示: 原因是您的查询将正确选择具有指定事件ID的嵌套事件的所有文档,但是,汇总将对所有选定文档中的所有嵌套事件进行处理。因此,您还需要