既存のフィールドのプロパティをnot_analyzed
からanalyzed
に変更することはできますか?弾性検索 - not_analyzedから分析されたフィールドに変更する
もしそうでなければ、私のすべてのドキュメントを店内に保管するために何ができますか?
マッピングを削除することはできません(すべてのドキュメントがなくなるためです)。分析するには古いフィールドが必要です。
既存のフィールドのプロパティをnot_analyzed
からanalyzed
に変更することはできますか?弾性検索 - not_analyzedから分析されたフィールドに変更する
もしそうでなければ、私のすべてのドキュメントを店内に保管するために何ができますか?
マッピングを削除することはできません(すべてのドキュメントがなくなるためです)。分析するには古いフィールドが必要です。
既存のフィールドを変更することはできませんが、フィールドに別のフィールドまたはadd a sub-fieldを作成することができます。
私は後者の解決策を検討しています。だから、最初に、このように、既存のフィールドに新しいサブフィールドを追加:上記
curl -XPUT localhost:9200/index/_mapping/type -d '{
"properties": {
"your_field": {
"type": "string",
"index": "not_analyzed",
"fields": {
"sub": {
"type": "string"
}
}
}
}
}'
、我々は(not_analyzed
ある)既存のyour_field
に(分析する)サブフィールドはyour_field.sub
と呼ばれる追加しました
次に、新しいサブフィールドに値を設定する必要があります。あなたは、最新のES 2.3を実行している場合、あなたがそうでなければ、強力なReindex API
curl -XPUT localhost:9200/_reindex -d '{
"source": {
"index": "index"
},
"dest": {
"index": "index"
},
"script": {
"inline": "ctx._source.your_field = ctx._source.your_field"
}
}'
を使用することができ、あなたは単純に再インデックスされますあなたのデータを新しいサブフィールドを移入するために、次のLogstash構成を使用することができます
input {
elasticsearch {
hosts => "localhost:9200"
index => "index"
docinfo => true
}
}
filter {
mutate {
remove_field => [ "@version", "@timestamp" ]
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
manage_template => false
index => "%{[@metadata][_index]}"
document_type => "%{[@metadata][_type]}"
document_id => "%{[@metadata][_id]}"
}
}
https://www.elastic.co/guide/en/elasticsearch/reference/0.90/mapping-multi-field-type.html
あなたがこれを使用することができます...そこには、単一のフィールドの複数のマッピングを持つことができ、マルチフィールドの型マッピングとして知られているものが、あります。また、クエリ、フィールドタイプに基づいてすることができます..
実行しているESのバージョンは何ですか? – Val
@Val ES ver。 2.2.0 – ohadinho