如何按offers
字段过滤id
数组并返回带搜索ID的结果对象?
当前搜索通过商品数据中的ID正确查找数据,但它也会返回所有对象:
GET activities/activity/_search
{
"query": {
"filtered": {
"filter": {
"bool": {
"must": [
{
"term": {
"offers.id": "12"
}
}
]
}
}
}
}
}
目前的结果,我想过滤优惠,只获得"id": 12
:
"hits": [
{
"_index": "activities",
"_type": "activity",
"_id": "AVtr4-UV81wMr8KFD246",
"_score": null,
"_source": {
"offers": [
{
"title": "merge",
"id": 11
},
{
"title": "order test",
"id": 12
}
],
"event": "candidate_remove",
"created_at": "2017-04-14T09:55:49.115174Z"
}
}
]
活动类型中商品的映射:
"offers": {
"type": "nested",
"include_in_parent": true,
"properties": {
"id": {
"type": "long"
},
"title": {
"type": "string",
"index": "not_analyzed"
}
}
},
答案 0 :(得分:1)
您需要inner_hits
个功能和nested
个查询:
{
"query": {
"filtered": {
"filter": {
"bool": {
"must": [
{
"nested": {
"path": "offers",
"query": {
"term": {
"offers.id": "12"
}
},
"inner_hits":{}
}
}
]
}
}
}
}
}
这将在名为inner_hits
的响应中添加另一个部分,其中显示匹配的嵌套文档。
如果您不需要原始offers
值,则可以在原始查询中添加以下内容:
{
"_source": {"exclude": "offers"},
"query": {
"filtered": {