Elasticsearch查询,用于使用Go olivere/elastic筛选value1==value2的文档
我需要构建查询以获取doc.value1==doc.value2的文档Elasticsearch查询,用于使用Go olivere/elastic筛选value1==value2的文档,go,
elasticsearch,Go,
elasticsearch,我需要构建查询以获取doc.value1==doc.value2的文档 { "query": { "bool" : { "filter" : [{ "script" : { "script" : { "source": "doc['val1'].value == doc['val2'].value",
{
"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()
//然后向这个查询中添加一些内容,或者将其留空,这样就可以了
//但如果我加上
query=query.Filter(elastic.NewBoolQuery().Must(elastic.NewScript(“doc.[val1'].value==doc.[val2'].value”))
//我得到:错误400(错误请求):[source]查询格式错误,
//查询名称[类型=解析\u异常]后没有启动\u对象
//然后我像这样运行它:
客户端,错误:=elastic.NewClient()
如果出错!=零{
fmt.Println(错误)
返回
}
resp,err:=client.Search(“myIndex”).Type(“myDoc”).Query(Query).TrackTotalHits(true).Size(limit).Do(context.Background())
如果出错!=零{
fmt.Println(错误)
返回
}
你能显示你在ES服务器日志中看到的错误吗?你能试试query=query.Filter(NewScriptQuery(NewScriptQuery(“doc.['val1'].value==doc.['val2'].value1”))
?Val,如果我知道怎么做,我会的)安德烈,我想这会让我更接近解决方案,但现在使用query=query.Filter(elastic.NewScriptQuery)(elastic.NewScript(“doc.[val1'].value==doc.[val2'].value”))
新错误是:错误400(错误请求):所有碎片失败[type=search\u phase\u execution\u exception]您必须从该异常中分享更多信息,理想情况下是Elasticsearch的stacktrace,如@Val所述。如果您是从ZIP或tarball安装的,ES服务器日志位于logs
文件夹中;如果您是从RPM/DEB安装的,ES服务器日志位于var/log/Elasticsearch
文件夹中。您能显示您在ES服务器日志中看到的错误吗你试试query=query.Filter(NewScriptQuery(NewScript(“doc.[val1'].value==doc.[val2'].value1”))
?Val,如果我知道怎么做的话,我会的)安德烈,我想这会让我更接近解决方案,但现在使用query=query.Filter(elastic.NewScriptQuery(elastic.NewScript(“doc.[val1'].value==doc.[val2'].value”))
新错误是:错误400(错误请求):所有碎片失败[type=search\u phase\u execution\u exception]您必须从该异常中分享更多信息,最好是Elasticsearch的stacktrace,如@Val所述。如果从ZIP或tarball安装,ES服务器日志位于logs
文件夹中;如果从RPM/DEB安装,ES服务器日志位于var/log/elasticsearch
文件夹中。
query = query.Filter(elastic.NewScriptQuery(elastic.NewScript("doc['val1'].value == doc['val2'].value")))