gpt4 book ai didi

elasticsearch - 如何将Elasticsearch的结果限制为仅包含父类型文档?

转载 作者:行者123 更新时间:2023-12-02 22:56:18 26 4
gpt4 key购买 nike

我有点卡在这个问题上,努力寻找解决方案:

我的共享Elasticsearch索引中确实有两种类型的条目,它们由parent:child关系连接。

我只想接收“父”类型的文档,还要包括实际上没有子文档的所有“父”文档。

有什么办法可以实现呢?

最好的祝愿,
斯特凡

最佳答案

下面的查询是您要寻找的。我已经使用了Bool查询

假设您具有以下针对父级 child 的映射,即具有question,其子级为answer

制图

PUT <your_index_name>
{
"mappings": {
"_doc": {
"properties": {
"my_join_field": {
"type": "join",
"relations": {
"question": "answer"
}
}
}
}
}
}

询问
POST <your_index_name>/_search
{
"query":{
"bool":{
"must":[
{ "term":{ "my_join_field":"question" }},
{
"bool":{
"must_not":[
{ "has_child":{
"type":"answer",
"query":{ "match_all":{} }
}
}
]
}
}
]
}
}
}

上面的查询将显示所有父文档,即 question,而没有任何子文档,即 answer

请注意,如果您在上述查询中将 must_not转换为 must,它将返回所有父文档,即具有子项的 question,即 answer;)

现在,如果您只想要父文档。即所有父文档,您的查询将仅采用以下格式:

查询所有父文档
POST <your_index_name>/_search
{
"query":{
"bool":{
"must":[
{
"term":{
"my_join_field":"question"
}
}
]
}
}
}

或者它可以很简单,如下所示:
POST <your_index_name>/_search
{
"query": {
"term": {
"my_join_field": "question"
}
}
}

基本上我已经实现了 Term Queries

让我知道是否有帮助!

关于elasticsearch - 如何将Elasticsearch的结果限制为仅包含父类型文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53224251/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com