ElasticSearch script_fieldsの出力を使用してインデックス内の別の変数を更新する方法はありますか?Elasticsearch script_fieldsは別のフィールドを更新しますか?
タイムスタンプが有効になっていても保存されていないElasticSearch 1.xにインデックスがあります。私は、このタイムスタンプフィールドを抽出し、インデックスに保存する必要がある
GET twitter/_search
{
"script_fields": {
"script1": {
"script": "_fields['_timestamp']"
}
}
}
- これはタイムスタンプが検索にアクセスし、またはのようなscript_fieldsを使用することができることを意味し
(マッピングについては以下を参照してください)。他のフィールドをコピーするスクリプトを書くのは簡単です。
ctx._source.t1=ctx._source.message
(私は更新APIを使用しています)しかし、どのように私は、インデックス内の別のフィールドを更新するためにscript_fields出力から値を使用できますか?フィールド 'tcopy'に各ドキュメントのタイムスタンプの値を取得します。
また、以下のようにjavaを使用して値を取得しようとしましたが、nullを返しました。
SearchResponse response = client.prepareSearch("twitter")
.setQuery(QueryBuilders.matchAllQuery())
.addScriptField("test", "doc['_timestamp'].value")
.execute().actionGet();
あなたは二つの実験でこれを行うために必要なマッピング
{
"mappings": {
"tweet": {
"_timestamp": {
"enabled": true,
"doc_values" : true
},
"properties": {
"message": {
"type": "string"
},
"user": {
"type": "string"
},
"tcopy": {
"type": "long"
}
}
}
}
}
を更新するには、この値を使用するスクリプトでUpdateRequestBuilder使用することができます
しかし、更新されたスクリプトは 'doc._timestamp.value'を使用することはできません。 – Val