如何使用ElasticSearch日期直方图value_field执行桶过滤

时间:2013-06-14 03:56:21

标签: elasticsearch

尝试使用以下类型的ElasticSearch日志构建日期直方图:

{
    "_index": "foo"
    "_source": {
    […]
    "time": "2013-06-12T14:43:13.238-07:00",
    "userName": "bar"
    }
}

其中直方图每“天”间隔对“时间”字段进行存储,但也是单个用户名的多次出现仅计数一次的情况。

我尝试了以下内容:

{
    "query" : {
        "match_all" : {}
    },
    "facets" : {
        "histo1" : {
            "date_histogram" : {
                "key_field" : "time",
                "value_script" : "doc['userName'].values.length",
                "interval" : "day"
            }
        }
    }
}

我希望每个“histo1”条目的min | max | mean都是各个时间段中唯一用户的数量。但结果始终返回min = max = mean = 1

    "histo1": {
        "_type": "date_histogram",
        "entries": [
            {
                "time": 1370908800000,
                "count": 11,
                "min": 1,
                "max": 1,
                "total": 11,
                "total_count": 11,
                "mean": 1
            },
            {
                "time": 1370995200000,
                "count": 18,
                "min": 1,
                "max": 1,
                "total": 18,
                "total_count": 18,
                "mean": 1
            }
        ]
    }

我是否误解了日期直方图中键/值的工作原理?

1 个答案:

答案 0 :(得分:2)

我最终使用了elasticsearch timefacets插件:https://github.com/crate/elasticsearch-timefacets-plugin

其他选项包括:

他们两人都只支持ES版本<不幸的是0.90。