当前位置: 首页 > 面试题库 >

ElasticSearch仅查询嵌套(如果存在)

锺离旻
2023-03-14
问题内容

我有此搜索查询,用于在根标题和描述中找到查询搜索词“ red dog”,并且还匹配嵌套的注释文档。

GET /_all/video/_search
{
   "query":{
      "bool":{
         "should":[
            {
               "multi_match":{
                  "query":"red dog",
                  "fields":[
                     "Title",
                     "Description"
                  ],
                  "type": "cross_fields",
                  "operator":"and"
               }
            },
        {
         "nested":{
                  "path":"Comments",
                  "query":{
                     "multi_match":{
                        "query":"red dog",
                        "fields":[
                            "Comments.Description",
                            "Comments.Description.folded"
                        ],
                        "type": "cross_fields",
                        "operator":"and"
                     }
                  }
               }
            }
         ]
      }
   }
}

对我来说不幸的是,当我将注释保留到ElasticSearch时,注释有时为空,是否可以执行某种“如果文档存在则包含”条件?

更新资料

我仍然遇到相同的错误

[nested] failed to find nested object under path [Comments]

当我尝试使用存在查询时

    GET /_all/video/_search
    {
       "query":{
          "bool":{
             "should":[
                {
                   "multi_match":{
                      "query":"lisa",
                      "fields":[
                         "Title",
                         "Description"
                      ],
                      "type":"cross_fields",
                      "operator":"and"
                   }
                },
                {
                   "nested":{
                      "path":"Comments",
                      "query":{
                         "filtered":{
                            "query":{
                               "match_all":{}
                            },
                            "filter":{
                               "exists":{
                                  "field":"Comments.Description"
                               }
                            }
                         }
                      }
                   }
                }
             ]
          }
       }
    }

我对所有事物的映射

{
   "en":{
      "mappings":{
         "video":{
            "properties":{
               "Comments":{
                  "type":"nested",
                  "properties":{
                     "Description":{
                        "type":"string",
                        "analyzer":"english",
                        "fields":{
                           "folded":{
                              "type":"string",
                              "analyzer":"folding"
                           }
                        }
                     }
                  }
               },
               "Description":{
                  "type":"string",
                  "analyzer":"english",
                  "fields":{
                     "folded":{
                        "type":"string",
                        "analyzer":"folding"
                     }
                  }
               },
               "Title":{
                  "type":"string",
                  "analyzer":"english",
                  "fields":{
                     "folded":{
                        "type":"string",
                        "analyzer":"folding"
                     }
                  }
               }
            }
         }
      }
   }
}

而我的设置

{
    "settings": {
        "analysis": {
            "analyzer": {
                "folding": {
                    "tokenizer": "standard",
                    "filter": [
                        "lowercase",
                        "asciifolding"
                    ]
                }
            }
        }
    }
}

问题答案:

事实证明,我有一个很棒的索引,没有针对我的类型的映射。我删除了插件,可以在所有索引中进行搜索。



 类似资料:
  • 我试图创建一个嵌套查询,它将过滤掉一些带有特定术语的文档。在本例中,我试图过滤掉在user.first中有匹配术语的文档。数据示例: 我的查询没有得到所需的结果,因为它返回给我所有未筛选的记录。我尝试使用: 我希望这里得到与过滤器不匹配的文档。在这种情况下,它应该只返回第二个文档。做这件事的正确方法是什么?

  • 问题内容: 我正在尝试使用query_string编写查询以检索嵌套对象的数据查询。 我想做的查询的一个例子是: 其中“ a”是嵌套对象,“ id”是“ a”的字段。 我知道我可以使用嵌套查询成功地执行此任务,编写如下查询: 但是,我想避免这种情况。我不想自己弄清楚用户正在搜索嵌套字段并修改查询。我尝试使用“ fields”参数,但它似乎不适用于嵌套对象。 是否可以使用“ query_string

  • 问题内容: 我在获取与Elasticsearch一起使用的嵌套查询时遇到问题(如果我删除了查询字符串之一,则可以使用)。我要解决的问题是我有一个包含关闭列表的文档(关闭)。我想在条件满足另一个值的闭包列表中搜索一个值。那只是从argan = 1的闭包中获得价值 我正在得到这个错误响应; 我的映射如下所示。 有人知道我在做什么错吗? 问题答案: 您的查询不是有效的查询。您需要使用适当的复合查询将其他

  • 我是elasticsearch的新手,对如何进行过滤器、查询和聚合有一些想法,但不确定如何解决下面的问题。我希望能够从下面显示的文档中只查询公司的最新交付(日期和crate_quantity)。我不确定如何去做。有没有办法使用最大聚合从每个文档中只提取最近的交付?

  • 我正在通过jHipster使用Spring Data Elasticsearch支持,并试图更多地了解如何使用搜索来扩展数据库中的一些新关系。 我有了一个新的嵌套关系,它有自己的索引: 我想将结果筛选到特定用户“friend1.id”,并在嵌套文档上搜索匹配的详细信息? 但这似乎没有返回任何结果?

  • 尊敬的弹性搜索专家, 我在查询嵌套对象时遇到问题。允许使用以下简化映射: 并将一些文档放在索引中: 现在我想执行这样的查询: 因此,我想得到匹配的公司与数量匹配的文件。因此,上面的查询应该会告诉我: 以下查询: 应该给我所有公司分配到一个文件,其标题包含“GPU”与匹配的文件数量: 如果表现良好,是否有可能实现这一结果?我显然对匹配的文档不感兴趣,只对匹配文档和嵌套对象的数量感兴趣。 谢谢你的帮助