cov*_*efe 2 go elasticsearch elasticsearch-5
我使用olivere的第5节elasticsearch库- https://godoc.org/github.com/olivere/elastic
尝试做与使用v.2库的此帖子类似的操作- 如何在按时间范围进行Go过滤结果的Elasticsearch 中搜索
但是“ NewRangeFilter”和“ NewFilteredQuery”在v.5中不可用。v.5(https://godoc.org/github.com/olivere/elastic#Aggregations.DateRange)中有一个'DateRange'API ,我可以从Aggregation中调用它,但是它需要一个字符串,所以我不这样做不知道我该传递什么。
到目前为止,这是我尝试构建的汇总。在那之后,我不确定传递给DateRange函数的内容。我有一个名为“ tmpindex”的索引,类型为“ user”,每个文档都有一个“ timestamp”属性,该属性是整数。
timeline := elasticClient.NewTermsAggregation().Field("timestamp").Size(10).OrderByCountDesc()
searchResult, err := elasticClient.Search().
Index("tmpindex"). // search in index "tmpindex"
Aggregation("timeline", timeline).
From(0).Size(10). // take documents 0-9
Pretty(true). // pretty print request and response JSON
Do(context.Background()) // execute
if err != nil {
return err
}
Run Code Online (Sandbox Code Playgroud)
我认为您正在寻找Range Query。
你会用这样的东西...
query := elastic.NewBoolQuery().
Filter(elastic.NewRangeQuery("timestamp").
From(start).
To(end))
Run Code Online (Sandbox Code Playgroud)
在哪里start和end在了time.time价值观和"timestamp"是你的时间字段的名称。
我应该注意,将其包装在Bool Query的过滤器中只是使用它的一种方法。它可以在可以传递查询的任何地方使用。
| 归档时间: |
|
| 查看次数: |
1984 次 |
| 最近记录: |