【问题标题】:Query nested fields using DSL with elasticsearch使用 DSL 和 elasticsearch 查询嵌套字段
【发布时间】:2014-10-09 08:47:38
【问题描述】:

当我尝试查询存在的嵌套字段时,我没有得到任何结果(它没有返回任何错误):

                result = es.search(
                          index="mydb", 
                          doc_type="collection", 
                          body={"query": 
                            { 
                                  "term" : {
                                      "foo.bar.field" : value
                                  }
                            }
                          }
                        )

注意:字段在 bar 内部,bar 在 foo 内部:

{ 'topfield' : 23, 'foo' : { 'bar' : { 'field' : 69 }, 'otherfield' : 1}}

如果我尝试对顶部的字段进行相同操作,它会正常工作:

                result = es.search(
                          index="mydb", 
                          doc_type="collection", 
                          body={"query": 
                            { 
                                  "term" : {
                                      "topfield" : value
                                  }
                            }
                          }
                        )

【问题讨论】:

    标签: python elasticsearch


    【解决方案1】:

    我想查询应该如下所示。我认为从下面的文档中可以看出,bar=>var 字段不匹配。

    { 'topfield' : 23, 'foo' : { 'var' : { 'field' : 69 }, 'otherfield' : 1}}
    

    请试试下面的代码

                result = es.search(
                          index="mydb", 
                          doc_type="collection", 
                          body={"query": 
                            { 
                                  "term" : {
                                      "foo.var.field" : value
                                  }
                            }
                          }
                        )
    

    请您确认一下。

    【讨论】:

    • 问题是 dot sintax,var/bar 不是问题
    猜你喜欢
    • 2020-10-10
    • 2018-10-17
    • 2021-02-11
    • 2021-05-20
    • 2021-11-15
    • 2014-12-28
    • 2021-07-08
    • 2020-09-04
    • 2020-02-15
    相关资源
    最近更新 更多