elasticsearch DeleteByQuery ElasticSearch Golang错误elastic:错误404(未找到)
我正在尝试从索引中删除具有特定ProductID的文档 以下是示例代码: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
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"