Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elasticsearch查询,用于使用Go olivere/elastic筛选value1==value2的文档_Go_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch - Fatal编程技术网 elasticsearch,Go,elasticsearch" /> elasticsearch,Go,elasticsearch" />

Elasticsearch查询,用于使用Go olivere/elastic筛选value1==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",

我需要构建查询以获取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()
//然后向这个查询中添加一些内容,或者将其留空,这样就可以了
//但如果我加上
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")))