douniang3866 2019-09-04 11:49
浏览 1834
已采纳

Elasticsearch查询使用Go Olivere / elastic过滤value1 == value2的文档

I need to build query to get documents where doc.value1 == doc.value2

{
    "query": {
        "bool" : {
            "filter" : [{
                "script" : {
                    "script" : {
                        "source": "doc['val1'].value == doc['val2'].value",
                        "lang": "painless"
                     }
                }
            }]
        }
    }
}

This what I need to build with olivere/elastic, it work if I send it as POST request.

In golang I have something like

"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
    }
  • 写回答

1条回答 默认 最新

  • dqwh1209 2019-09-04 12:52
    关注
    query = query.Filter(elastic.NewScriptQuery(elastic.NewScript("doc['val1'].value == doc['val2'].value")))
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 python安卓开发
  • ¥15 使用R语言GD包一直不出结果
  • ¥15 计算机微处理器与接口技术相关问题,求解答图片的这个问题,有多少个端口,端口地址和解答问题的方法和思路,不要AI作答
  • ¥15 如何根据一个截图编写对应的HTML代码
  • ¥15 stm32标准库的PID角度环
  • ¥15 ADS已经下载好了,但是DAS下载不了,一直显示这两种情况,有什么办法吗,非常急!
  • ¥100 Excel 点击发送自动跳转outlook邮件
  • ¥15 gis中用栅格计算器或加权总和后图层不显示,值也明显不对
  • ¥15 python使用python-pptx如何给幻灯片添加只读密码。
  • ¥15 深度神经网络传递自变量损失