这是我使用 Postman 为此端点的请求正文localhost:9201/response_v2_862875ee3a88a6d09c95bdbda029ce2b/_search{"_source": ["_id"],"from": 1,"size": 10,: { "should": { "match": { } }, { "range": { "_updated_at": { "from": "36163", "include_lower": true, "include_upper": true, "to": null } } }] }}}到此网址 localhost:9201/rensedbda029ce2b/_search我得到了结果https://gist.gith但是当我从服务器向 ES 发出相同的请求时,我收到一条错误消息“elastic: Error 400 (Bad Request): Expected [START_OBJECT] but found [START_ARRAY] [type=parsing_exception]”这些是我的代码的一些片段。我从另一个 util 函数获取查询,并在调用 ES 时使用它。这是对ES的调用res, err = r.esConn.Search(indexName).e(requestBody.ResponsePageLength).Do(ctx)查询构建器函数是这样的,它接受从对我的服务器的请求正文中提取的参数,并基于该参数构建查询。func CreateMonitoringPipeline(maxResponseTime string, responseQueries []ResponseQuery, baselineFormId string) *elastic.BoolQuery {finalQuery := elastic.NewBoolQuery() dateRangeMatchQuery := elastic.NewRangeQuery("_updated_at"). Gte(maxResponseTime) finalQuery.Filter(dateRangeMatchQuery)}return finalQuery}我不明白为什么会发生这种情况?我的 ES 使用 ES 二进制文件运行,我的服务器在 docker 容器中运行。对 ES 和 golang 完全陌生,所以请帮忙。
1 回答
慕妹3146593
TA贡献1820条经验 获得超9个赞
这["_id"]
就是正在发送的请求。问题出在请求行中,因为Source([]string{"_id"})
没有将源字段设置为["_id"]
您想要的,而是:
Source 允许用户手动设置请求正文,而无需使用 Elastic 中的任何结构和接口。
你想改用FetchSourceContext
:
res, err = r.esConn.Search(indexName).From(requestBody.MaxResponseTimestampCount).FetchSourceContext(elastic.NewFetchSourceContect(true). Include("_id")).Query(query).Size(requestBody.ResponsePageLength).Do(ctx)
- 1 回答
- 0 关注
- 119 浏览
添加回答
举报
0/150
提交
取消