特定の製品IDを持つインデックスからドキュメントを削除しようとしています。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(私は文書が存在するかどうJUST確認するためにこれをしなかった)との文書を返します。
削除や、コードに何が間違っているのか、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