go - 使用 Go Olivere/elastic 过滤 value1 == value2 的 Elasticsearch 查询
问题描述
我需要构建查询以获取 doc.value1 == doc.value2 的文档
{
"query": {
"bool" : {
"filter" : [{
"script" : {
"script" : {
"source": "doc['val1'].value == doc['val2'].value",
"lang": "painless"
}
}
}]
}
}
}
这是我需要用 Olivere/elastic 构建的,如果我将它作为 POST 请求发送,它就可以工作。
在 golang 我有类似的东西
"github.com/olivere/elastic"
...
query := elastic.NewBoolQuery()
// then add something to this query or leave it empty it works fine
// but if I add
query = query.Filter(elastic.NewBoolQuery().Must(elastic.NewScript("doc.['val1'].value == doc.['val2'].value")))
// I'm getting: Error 400 (Bad Request): [source] query malformed,
// no start_object after query name [type=parsing_exception]
// Then i run it like:
client, err := elastic.NewClient()
if err != nil {
fmt.Println(err)
return
}
resp, err := client.Search("myIndex").Type("myDoc").Query(query).TrackTotalHits(true).Size(limit).Do(context.Background())
if err != nil {
fmt.Println(err)
return
}
解决方案
query = query.Filter(elastic.NewScriptQuery(elastic.NewScript("doc['val1'].value == doc['val2'].value")))
推荐阅读
- tcl - F5 irule 在控制台的脚本中
- javascript - React:如何测试使用 ref 的组件输入?
- azure - Azure 函数的托管标识是否可以跨多个订阅进行访问?
- python - 数据框列的条形图按另一列的标准拆分
- javascript - 我想通过 Javascript/Google App 脚本中的 API 响应向用户发送电子邮件?
- php - 选择 XML 中的特定节点(循环)
- ios - iOS App - 在用户选择的浏览器中打开网站
- opencv - 如何找到图像中的点?
- git - 文件名的最大字符,包括 git 中支持的路径
- c# - 列表的下拉列表
在 ASP.NET MVC 中