当前位置: 首页 > 知识库问答 >
问题:

多个弹性搜索Inner_hits查询未按预期提供结果

洪知
2023-03-14

我正在尝试使用弹性搜索的内部点击功能来检索子文档内容。我的查询包含两个has_child子句,如下面的代码片段所示。我所观察到的是,我只获得了内部点击响应中属于第二个子子句的那些子内容。看起来最后的内部点击覆盖了第一个内部点击。

有什么方法可以同时获得内心的点击率吗?

下面是我使用的查询。

{  
   "query":{  
      "bool":{  
         "must":[

            {  
               "has_child":{  
                  "type":"subformcontent",
                  "query":{
                    "bool": {
                        "must": [
                            {
                                "term":{  
                                    "txt_1.raw":"Malayalam"
                                }
                            },
                            {
                                "term":{  
                                    "parent_field_id":"1000"
                                }
                            }
                        ]
                    }                                            
                  },
               "inner_hits":{  
                     "size":10
                  }                  
               }
            }, 
            {  
               "has_child":{  
                  "type":"subformcontent",
                  "query":{
                    "bool": {
                        "must": [
                            {
                                "term":{  
                                    "txt_1.raw":"Malayalam"
                                }
                            },
                            {
                                "term":{  
                                    "parent_field_id":"1001"
                                }
                            }
                        ]
                    }                                            
                  },
               "inner_hits":{  
                     "size":10
                  }
               }
            }
         ]
      }
   }

}

共有1个答案

岳华灿
2023-03-14

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-inner-hits.html 说

名字

用于响应中特定内部点击定义的名称。当在单个搜索请求中定义了多个内部命中时非常有用。默认值取决于在哪个查询中定义了内部命中。对于has_child查询和筛选器,这是子类型,has_parent查询和筛选器,这是父类型,嵌套查询和筛选器,这是嵌套路径。

我猜既然你没有定义名称,并且文档说默认值是has_child那么你可以为inner_hits查询定义名称。否则,两者都被命名为“子服从内容”,因此它们会相互覆盖。

{  
   "has_child":{  
      ...
      "inner_hits":{  
         "size":10,
         "name": "hits_1"
      }                  
   }
}, 
{  
   "has_child":{  
      ...
      "inner_hits":{  
         "size":10,
         "name": "hits_2"
      }
   }
}

潜在重复:如何在同一路径的多个嵌套子查询中返回多个内部命中?

 类似资料:
  • 我正在LDAP服务器上工作。它有弹性搜索。我必须用一些Javascript代码(JSON格式)发送查询。 这是我的查询: 我试图打印所有结果,其中“server”=“server\u name”(该字段是server:server\u name…)。我认为关于弹性搜索的文档太小了。我找到了一些文档,但都是一样的,对新用户没有帮助。这个例子太简单了。 此查询返回所有结果,包括任何筛选器。 Ps:这就

  • 我有以下格式的弹性搜索文档 } } 我的要求是,当我搜索特定字符串(string.string)时,我只想获得该字符串的FileOffSet(string.FileOffSet)。我该怎么做? 谢谢

  • 试图找出这个微不足道的例子的分数。我希望得到brenda eaton的文件,但我得到的是brenda fassie的最佳结果。

  • 我在术语查询中要求弹性搜索中的嵌套字段,其中嵌套字段值应与术语查询中提供的值的数量完全匹配。例如,考虑下面的查询,在这里我们对名为类型的嵌套字段进行查询。 GET资产/_search 索引映射 样本文件: 上述查询应返回字段类型正好有2个值的文档,即“VOD”

  • 创建新的。NET Framework 4.6.1控制台应用程序 为NEST 6.5.0和ElasticSearch.NET 6.5.0添加NuGet包 然后,我创建了一个新的弹性索引,其中包含具有“tags”属性的对象(类型为“mything”)。此标记是一组可能值中的随机逗号分隔的单词集。在测试中,我在索引中插入了100到5000项。我试了越来越少的可能的词在设置。