「文字列」フィールドの変換中に再インデックスする方法を教えてください。 "field2": "123.2"(旧インデックス文書内)を浮動小数点数に変換する。 "field2":123.2(新しいインデックスに入ることを意図している)?この投稿は私が得ることができる最も近いですが、文字列を数値にキャスト/変換するために使用する関数がわかりません。私はElasticSearchバージョン2.3.3を使用しています。アドバイスをありがとうございました!!!特定のフィールド(古いインデックスにある)の文字列値を(新しいインデックスの)数値フィールド値に変換する際にインデックスを再作成する
1
A
答えて
0
Elasticsearch templatesを使用して、新しいインデックスのマッピングを指定し、そのフィールドをダブルタイプとして指定します。
テンプレートを作成する最も簡単な方法は、既存のマッピングを使用することです。
GET oldindex/_mapping
POST _template/templatename
{
"template" : "newindex", // this can be a wildcard pattern to match indexes
"mappings": { // this is copied from the response of the previous call
"mytype": {
"properties": {
"field2": {
"type": "double" // change the type
}
}
}
}
}
POST newindex
GET newindex/_mapping
その後
POST _reindex
{
"source": {
"index": "oldindex"
},
"dest": {
"index": "newindex"
},
"script": {
"inline": "ctx._source.field2 = ctx._source.field2.toDouble()"
}
}
(あなたがenable inline scriptingする必要があるかもしれません)新しいインデックスに古いインデックスからデータを移動し、インラインスクリプトを使用してdoubleとしてフィールドを解析するelasticsearch _reindex APIを使用:_reindexエンドポイントを使用するように更新
0
データを再インデックス化してフィールドを変換することができます。次のようなもの:
input {
elasticsearch {
hosts => "es.server.url"
index => "old_index"
query => "*"
size => 500
scroll => "5m"
docinfo => true
}
}
filter {
mutate {
convert => { "fieldname" => "long" }
}
}
output {
elasticsearch {
host => "es.server.url"
index => "new_index"
index_type => "%{[@metadata][_type]}"
document_id => "%{[@metadata][_id]}"
}
}
+0
ありがとうございました!残念ながら私はLogstashを使用していません。 – leeway
関連する問題
- 1. 値/文字列に達するまでのインデックス値DataFrame
- 2. インデックス配列のインデックス作成時のNumpy配列の設定値
- 3. 配列を特殊インデックスの文字列に変換する
- 4. php配列 - 数値文字列インデックス
- 5. リスト内のインデックスをx個の数値に変換するpython
- 6. バイト配列を特定のインデックスの文字列に変換する(Flex)
- 7. フィールドのインデックスを作成しようとしていますか? (nil値)
- 8. 文字列のインデックスを整数に変換する
- 9. Sphinxインデックスの特定のフィールドにRegexp_filter?
- 10. nullのインデックスを持つ配列値のインデックスを変更するには
- 11. インデックスでC++文字列インデックスに値を割り当てる方法
- 12. React immutability helper - 配列のインデックスに新しい値を設定する
- 13. Lucene - インデックスを付ける必要のない文字列フィールド
- 14. 文字列を特定のインデックスで配列に分割する
- 15. テンソルフローの行列変数の値を更新し、高度なインデックス作成
- 16. sqlの文字列列のインデックスを作成するには?
- 17. SyBase:列の値に基づいて一意のインデックスを作成する
- 18. 配列内の特定のインデックスに新しい値を挿入し、すべてを1つのインデックスだけシフトする方法はありますか?
- 19. 文字列を整数値でインデックスできない理由
- 20. pandasシリーズをインデックスと値のタプルに変換する方法
- 21. マップ(値、インデックス)をベクトル(インデックス、値)にC++で変換する最速の方法は何ですか?
- 22. 文字列をインデックスのリストに変換する
- 23. 曜日インデックスを文字列の目的コードに変換する
- 24. 数値フィールド(サイズ:10)を文字フィールド(サイズ:7)に変換する方法
- 25. Java:文字列内の特定の文字をインデックスに置き換えます。
- 26. 特定のインデックスを作成する
- 27. 列のインデックス値を参照する式
- 28. Python内の特定の行のインデックス値
- 29. 特定の文字の後の文字列から数値を取得し、その数値を変換する
- 30. Python、最小値インデックスのインデックス
ありがとうございました。私の問題は、あなたが「スキャンとスクロール中にjsonを変換する」というように、あなたが記述したところにあります。私は_reindexリクエストのクエリで新しいスクリプトフィールドを作成するelasticsearchの_reindex機能で可能でなければならないと主張していますが、正確な構文や機能は基本的にどこにも見つかりませんでした。ちょうどメモ:私は* logstashを使用していない*です。 – leeway
私は文字列 - > floatからフィールドのthevalueを変換するインラインスクリプトの変換関数を見つけた場合、この[1]のような仕事でしょうか? [1] http://stackoverflow.com/questions/42423899/renaming-fields-to-new-index-in-elasticsearch/42425103#42425103 – leeway
元の質問で述べた文字列 - >浮動小数点数変換に最も近いポストここでは(前に非特異的であることを申し訳ありません):http://stackoverflow.com/questions/30706361/convert-strings-to-floats-at-aggregation-time – leeway