Elasticsearch DSL用于2个时间戳之间的所有空值

时间:2016-10-07 17:26:29

标签: elasticsearch dsl

我在Elasticsearch中有这个JSON结构。我在创建DSL时遇到问题,无法搜索null范围为awsKafkaTimestamp A和B之间的所有post.timestamp值。我该怎么做?

{
  "tracer": {
    "post": {"timestamp": 123123},
    "awsKafkaTimestamp": null,
    "qdcKafkaTimestamp": null
  }
}

1 个答案:

答案 0 :(得分:1)

试试这个:(适用于ES 2.4 - 不适用于2.2及以下版本)

{

    "fields" : ["your_field"],
    "query" : {
        "bool" : {
            "must_not" : {
                "exists" : {
                    "field" : "awsKafkaTimestamp "
                }
            },
            "must" : [{
                    "nested" : {
                        "path" : "post",
                        "filter" : {
                            "bool" : {
                                "must" : {
                                    "range" : {
                                        "post.timestamp" : {
                                            "lte" : A,
                                            "gte" : B
                                        }
                                    }
                                }
                            }
                        }
                    }

                }
            ]
        }
    }
}