我想我需要ElasticSearch
的帮助。
我有一个parent child
映射,我想在子文档中的父或中搜索包含该单词的文档。想想一个SO问题和答案。有1:n
个问题可供回答。我想问SeachWord
在问题(父母)中的问题,我也想知道SearchWord
是否在任何孩子的答案中,即使SearchWord不在问题
这是我的查询,结果是子文档,但我希望得到父文档。
{
"query": {
"bool": {
"should": [{
"query_string": {
"query": "SearchWord"
}
},
{
"has_child": {
"type": "answers",
"query": {
"match": {
"_all": "SearchWord"
}
}
}
}]
}
},
"size": 1
}
感谢您的帮助!
更新
查询完全正确我唯一的错误就是对索引运行查询。
Worng: cUrl / index / _search
正确: cUrl / index / parenttype / _search
我希望这可以帮助任何有父母子女搜索问题的人; - )
问候
菲利普
答案 0 :(得分:0)
您应该查询子项和filter on parent
cUrl / indexName / childType
{
"query": {
"bool": {
"should": [
{
"has_parent": {
"type": "questions",
"query": {
"query_string": {
"query": "SearchWord"
}
}
}
},
{
"match": {
"_all": "SearchWord"
}
}
]
}
},
"size": 1
}
答案 1 :(得分:-1)
你的回答并不完全是我想要的,但我给了我正确的方向 我必须查询父类型而不是整个索引。所以这是我的解决方案,它的工作方式与预期一致。
{
"query": {
"bool": {
"should": [
{
"has_child": {
"type": "answers",
"query": {
"query_string": {
"query": "SearchWord"
}
}
}
},
{
"query_string" : {
"query": "SearchWord"
}
}
]
}
},
"size": 1
}
非常感谢!