這是我使用 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 關注
- 153 瀏覽
添加回答
舉報
0/150
提交
取消