Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.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
<img src="//i.stack.imgur.com/RUiNP.png" height="16" width="18" alt="" class="sponsor tag img">elasticsearch DeleteByQuery ElasticSearch Golang错误elastic:错误404(未找到)_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Go - Fatal编程技术网 elasticsearch DeleteByQuery ElasticSearch Golang错误elastic:错误404(未找到),elasticsearch,go,elasticsearch,Go" /> elasticsearch DeleteByQuery ElasticSearch Golang错误elastic:错误404(未找到),elasticsearch,go,elasticsearch,Go" />

elasticsearch DeleteByQuery ElasticSearch Golang错误elastic:错误404(未找到)

elasticsearch DeleteByQuery ElasticSearch Golang错误elastic:错误404(未找到),elasticsearch,go,elasticsearch,Go,我正在尝试从索引中删除具有特定ProductID的文档 以下是示例代码: package main import ( "encoding/json" "log" "time" "fmt" "gopkg.in/mgo.v2/bson" elastic "gopkg.in/olivere/elastic.v3" ) func main() { client, err := elastic.NewClient(elastic.SetSnif

我正在尝试从索引中删除具有特定ProductID的文档

以下是示例代码:

package main

import (
    "encoding/json"
    "log"
    "time"
    "fmt"
    "gopkg.in/mgo.v2/bson"
    elastic "gopkg.in/olivere/elastic.v3"
)

func main() {

    client, err := elastic.NewClient(elastic.SetSniff(false), elastic.SetURL("http://localhost:9200"))
    if err != nil {
        log.Fatal("Cannot create ES client:", err)
    }
    boolQuery := elastic.NewBoolQuery().Must(elastic.NewTermQuery("productId", "1503368"))

    searchQuery := client.Search().Query(boolQuery).
        Index("magento1").Type("catalog")
    result, err := searchQuery.Do()
    for _, hit := range result.Hits.Hits {
        var data bson.M
        _ = json.Unmarshal(*hit.Source, &data)
        fmt.Println("SEARCH RESPONSE\n", data)
    }

    result2, err2 := elastic.NewDeleteByQueryService(client).
        Index("magento1").
        Type("catalog").
        Query(boolQuery).
        Do()
    fmt.Println("DELETE RESPONSE 2: \n", result2, err2)

}
SearchQuery给出正确的响应,并返回带有提供的productId的文档(我这样做只是为了验证文档是否存在)

现在删除,我不知道代码到底出了什么问题,也不知道API中是否缺少任何东西,或者是否必须添加一些额外的东西(matchAll等),但这个deleteQuery只是不删除索引,总是给我响应:

error elastic: Error 404 (Not Found)
我搜索了所有博客/文档/官方图书馆的GitHub案例等,但没有一个解决我的问题。虽然我已经下定决心扫描/滚动和批量删除,但我仍然想知道,如果在官方文档中,为什么这样做不起作用

以下是映射:

"productId": bson.M{"type": "string", "store": true, "index": "not_analyzed"},
ES版本:
5.3.1


谢谢。

这个问题是因为您使用的是
elastic.v3

因为您使用的是ES 5.3.1,所以需要使用,所以只需更换这一行即可

elastic "gopkg.in/olivere/elastic.v3"


您应该很好。

ES日志中是否也有错误?我一直认为elastic.v3适用于ES 5.3.1,因此从不费心查看。我仍然无法确认切换到elastic.v5是否可以解决问题,因为我无法将我的golang升级到1.7以运行elastic.v5(我有golang 1.5.1)。虽然无法测试,但我相信这是正确的答案。接受。谢谢。太好了,如果需要,请随时回来。
elastic "gopkg.in/olivere/elastic.v5"