いくつかのドキュメントをクロールし、elasticsearch でインデックスを作成しました。センスを使用してクエリを実行しています:
これはelasticsearchでの私のクエリです:
POST /index/_update_by_query
{
"script": {
"inline": "ctx._source.remove(\"home\")"
},
"query": {
"wildcard": {
"url": {
"value": "http://search.com/*"
}
}
}
}
これは私のJavaプログラムです:
Client client = TransportClient.builder().addPlugin(ReindexPlugin.class)
.build().addTransportAddress(new InetSocketTransportAddress(
InetAddress.getByName("127.0.0.1"), 9300));
UpdateByQueryRequestBuilder ubqrb = UpdateByQueryAction.INSTANCE
.newRequestBuilder(client);
Script script1 = new Script("ctx._source.remove" +FieldName);
BulkIndexByScrollResponse r = ubqrb.source("index").script(script1)
.filter(wildcardQuery("url", patternvalue)).get();
FieldName (ホームが文字列として保存される場所) は、ドキュメントから削除するフィールドの名前です。patternvalue は、パターン " http://search.com/ *" が格納されている場所です。この Java プログラムを実行すると、ドキュメントからホーム フィールドが削除されません。ドキュメントに remove という新しいフィールドを追加します。私は何かが欠けているかもしれません。どんな助けでもいただければ幸いです