我試圖從我的索引中刪除具有特定productID的文檔。DeleteByQuery ElasticSearch Golang錯誤彈性:錯誤404(未找到)
這裏的示例代碼:
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的tests箱子等,但沒有解決我的問題。儘管我已經解決了掃描/滾動和批量刪除仍然奇怪爲什麼這不起作用,如果它在官方文檔中。
這裏的映射:
"productId": bson.M{"type": "string", "store": true, "index": "not_analyzed"},
ES版: 5.3.1
感謝。
ES日誌中是否有錯誤? – Val