当找到结果时,elasticsearch搜索命中空

时间:2013-06-02 13:52:00

标签: elasticsearch

我在elasticsearch中遇到嵌套查询问题。我正在通过java api构建一个复杂的嵌套查询,以便对我的索引运行一个过滤的查询。从弹性搜索返回的结果表明有1个匹配([总计:1,花费:79毫秒]),但这并不是作为响应的一部分返回任何“命中”。

def response = client.search(request).actionGet()
def searchHits = response.hits() // <--- this is empty

result.total = searchHits.totalHits() // <--- this is populated with one
result.took = response.getTook()

通过curl或rest客户端正确运行完全相同的查询会返回整个匹配文档。因此我知道在两种情况下都能正确构造查询。

size和from参数都设置为默认值,应该返回文档。

如果我将嵌套查询移动到过滤器部分,我会得到相同的匹配文档,但会填充hits()对象。

查询本身位于

之下
{
  "filtered" : {
    "query" : {
      "bool" : {
    "must" : [ {
      "nested" : {
        "query" : {
          "bool" : {
            "must_not" : {
              "bool" : {
                "must" : [ {
                  "range" : {
                    "nested.from" : {
                      "from" : "2013-06-01T23:00:14.343Z",
                      "to" : "2013-06-02T23:00:14.343Z",
                      "include_lower" : true,
                      "include_upper" : true
                    }
                  }
                }, {
                  "term" : {
                    "nested.status" : "accepted"
                  }
                } ]
              }
            },
            "should" : [ {
              "bool" : {
                "must" : [ {
                  "range" : {
                    "nested.from" : {
                      "from" : "2013-06-01T23:00:14.343Z",
                      "to" : "2013-06-02T23:00:14.343Z",
                      "include_lower" : true,
                      "include_upper" : true
                    }
                  }
                }, {
                  "term" : {
                    "nested.status" : "saved"
                  }
                } ]
              }
            } ]
          }
        },
        "path" : "nested"
      }
    } ]
      }
    } ]
  }
},
"filter" : {
  "and" : {
    "filters" : [ {
      "type" : {
        "value" : "user"
      }
    }]
      }
    }
  }
}

1 个答案:

答案 0 :(得分:0)

已修复 - 已升级为新版本的elasticsearch。

似乎版本0.20.x及以下版本不喜欢使用java api构建的嵌套查询。