elasticsearch - 如何在 Elasticsearch 的同一查询中使用 `gt` 和 `fields`

标签 elasticsearch nested elasticsearch-query

在我的previous question , 我了解到 query_string 查询中的 fields 以及它如何帮助我搜索文档的嵌套字段。

{
  "query": {
    "query_string": {
      "fields": ["*.id","id"],
      "query": "2"
    }
  }
}

但是它只对匹配有效,如果我想做一些比较呢?经过一些阅读和测试,range 之类的查询似乎不支持 fields。有什么方法可以执行 range 查询,例如在一个日期上,在一个可以分散在文档层次结构中任何地方的字段上?

即考虑以下文件:

{
    "id" : 1,
    "Comment" : "Comment 1",
    "date" : "2016-08-16T15:22:36.967489",
    "Reply" : [ {
        "id" : 2,
        "Comment" : "Inner comment",
        "date" : "2016-08-16T16:22:36.967489"
    } ]
}

是否有查询搜索匹配给定文档的 date 字段(如 date > '2016-08-16T16:00:00.000000'),因为嵌套字段,没有明确给出 Reply.date 的地址?像这样(我知道下面的查询是不正确的):

{
    "query": {
        "range" : {
            "date" : {
                "gte" : "2016-08-16T16:00:00.000000",
            },
            "fields": ["date", "*.date"]
        }
    }
}

最佳答案

range 查询本身不支持它,但是,您可以(再次)利用 query_string 查询,事实上您可以使用通配符字段并且它支持范围查询以实现您的需要:

{
  "query": {
    "query_string": {
      "query": "\*date:[2016-08-16T16:00:00.000Z TO *]"
    }
  }
}

上面的查询将返回您的文档,因为 Reply.date 匹配 *date

关于elasticsearch - 如何在 Elasticsearch 的同一查询中使用 `gt` 和 `fields`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38987608/

相关文章:

elasticsearch - 我可以从Kibana可视化中获取消息吗?

c# - 使用嵌套母版页

nested - 在另一个模板中嵌套闭包模板

python:FOR循环,迭代赋值未分配正确的值

elasticsearch - Elasticsearch:无法使用过滤器查询 bool 嵌套查询并进行排序

elasticsearch - NEST Fluent DSL查询某些URL字段

elasticsearch - 是否可以通过单个运行列表动态构建弹性集群?

elasticsearch - 模糊查询未给出任何结果

c# - 主对象和嵌套对象中的Elastic Search 2.0搜索查询

ruby-on-rails - 使用带有Rails的jBuilder Elasticsearch动态设置 key