使用带弹性搜索的DSL查询嵌套字段

时间:2014-10-09 08:47:38

标签: python elasticsearch

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

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

注意:字段位于栏内,栏位于foo内:

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

如果我尝试使用顶部的字段,它可以正常工作:

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

1 个答案:

答案 0 :(得分:0)

我想查询应如下所示。我认为字段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
                              }
                        }
                      }
                    )

请你确认一下。