【问题标题】:Get all children of parents which matches query in elastic search在弹性搜索中获取与查询匹配的所有父母子女
【发布时间】:2020-04-21 08:18:17
【问题描述】:

我正在使用弹性搜索 6.5 并使用联合数据类型来处理父子关系。 我能够用很少的父母和关联的孩子创建索引。

现在我想搜索与输入的短语匹配的父母的所有孩子。例如。如果用户输入“San”,那么查询应该搜索所有匹配这个短语的父母。即沙子,三明治,消毒剂。然后使用它们作为 'id' 也返回所有的孩子。

我尝试使用“parent_id”,但它不适用于匹配查询。

{
  "query": {
    "parent_id": { 
      "type": "answer",
      "id": "1"
    }
  }

上面的查询我可以搜索childrens但必须完全提到parent id,但我正在寻找可以匹配短语和搜索的东西。

请您帮助我并指导正确的方法。

谢谢。

【问题讨论】:

    标签: elasticsearch elasticsearch-query


    【解决方案1】:

    你需要使用has_parent

    {
      "query": {
        "has_parent": {
          "type": "parent_type", --> replace with parent join_field value
          "query": {
            "match_phrase_prefix": {
              "FIELD": "PHRASE"
            }
          },
          "inner_hits": {} --> will return child documents
        }
      }
    }
    
    

    【讨论】:

    • 感谢您的回复。它帮助了我。我只是在看文档。 'has_child' 对子文档执行查询并返回父文档。所以我把它改成了'has_parent',它对我有用。 {“查询”:{“has_parent”:{“parent_type”:“搜索”,“分数”:true,“查询”:{“match_phrase_prefix”:{“搜索”:{“查询”:“san”}}} } }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-02
    • 2019-10-21
    • 1970-01-01
    • 1970-01-01
    • 2018-08-15
    • 1970-01-01
    • 2015-10-03
    相关资源
    最近更新 更多