道歉,配置使这个问题变得很长
我有一个看起来像这样的架构:
{
"mappings": {
"mytype": {
"properties": {
"event_datetime": {"type": "date"},
"elements": {
"type": "nested",
"properties": {
"name": {"type": "keyword"},
"id": {"type": "text"},
"type": {"type": "keyword"},
"content": {
"type": "nested",
"properties": {
"html": {"type": "text"},
"label": {"type": "keyword"},
"text": {"type": "text"},
"title": {"type": "text"}
}
}
}
}
}
}
}
}
我想查找elements.content.html
包含http
的条目:
{
"_source": ["event_datetime"],
"query": {
"nested": {
"path": "elements.content",
"query": {
"wildcard": {"elements.content.html": "*http*"}
},
"inner_hits": {}
}
}
}
这是响应的相关部分的样子
"_source": {
"event_datetime": "2019-01-22T05:24:21"
},
"inner_hits": {
"elements.content": {
"hits": {
"total": 1,
"max_score": 1,
"hits": [{
"_index": "my_index",
"_type": "mytype",
"_id": "ABC",
"_nested": {
"field": "elements",
"offset": 73,
"_nested": {
"field": "content",
"offset": 0
}
},
"_score": 1,
"_source": {
"html": "blah https blah"
}
}...}
我想要的东西
我希望elements.type
被包含在回复中。
我尝试了将"_source" : ["elements.content.html", "elements.type"]
添加到各个级别的各种排列,但是还没有弄清楚如何将elements.type
信息附加到响应对象(某处,只要连接并易于导航就可以了。
答案 0 :(得分:1)
要执行此操作,您需要在父级别(即inner_hits
级别)上elements
。因此,您可以在嵌套查询中重新嵌套查询,如下所示。
{
"_source": [
"event_datetime"
],
"query": {
"nested": {
"path": "elements",
"inner_hits": {
"_source": [
"elements.type",
"elements.content.html"
]
},
"query": {
"nested": {
"path": "elements.content",
"query": {
"wildcard": {
"elements.content.html": "*http*"
}
}
}
}
}
}
}