登录
首页 >  Golang >  Go问答

在Golang中如何将数组传递给Elasticsearch的New Terms查询?

来源:stackoverflow

时间:2024-03-14 11:39:29 179浏览 收藏

怎么入门Golang编程?需要学习哪些知识点?这是新手们刚接触编程时常见的问题;下面golang学习网就来给大家整理分享一些知识点,希望能够给初学者一些帮助。本篇文章就来介绍《在Golang中如何将数组传递给Elasticsearch的New Terms查询?》,涉及到,有需要的可以收藏一下

问题内容

我想使用 golang 实现以下 elasticsearch 查询。

{
  "query": {
    "bool": {
      "must": {
        "range": { "sales_start_date": { "gte": "2018-07-01t00:00:00.000z" } }
      },
      "filter": {
        "terms": { "item_holder_id": [2, 7, 9] }
      }
    }
  }
}
'

我当前的代码如下(我正在使用http://github.com/olivere/elastic 库)。

query := elastic.newboolquery()
query = query.must(elastic.newrangequery("sales_start_date").gte(date).timezone("+09:00"))
query = query.filter(elastic.newtermsquery("item_holder_id", ihids))

其中 ihid 是 []int。 当我执行此代码时,出现错误

elastic: error 400 (bad request): [terms] unknown token [end_array] after [item_holder_id] [type=parsing_exception]

经过一番研究,我发现我需要这样写

elastic.NewTermsQuery("item_holder_id", "1", "2")

但是作为 golang 新手,我想我缺少一些基本概念。如何传递这样的值数组?

感谢您提供任何可以帮助我的信息!


解决方案


为了完成@ullaakut 的回答:

// Convert type []int to type []interface{}

status := make([]interface{}, len(ihids))
for index, value := range ihids {
    status[index] = value
}

// Ullaakut aswer

query := elastic.NewBoolQuery()
query = query.Must(elastic.NewRangeQuery("sales_start_date").Gte(date).TimeZone("+09:00"))
query = query.Filter(elastic.NewTermsQuery("item_holder_id", status...))

我也遇到了同样的问题,我就是这样解决的。

以上就是《在Golang中如何将数组传递给Elasticsearch的New Terms查询?》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>