解析されていない文字列をインデックスしたいが、それを特定の文字数に切り捨てたい。
Update API and Upsert optionと技術的には可能ですが、ご自身のご要望によっては、それほど便利ではない場合があります。
{
"name": "foofoofoofoo",
"age": 29
}
いますが、それが唯一の5文字を持つようにname
フィールドを切り捨てる必要があります。
はあなたがインデックスにこの文書をしたいとしましょう。更新APIを使用して、スクリプトを実行する必要があると思います:
POST http://localhost:9200/insert/test/1/_update
{
"script" : "ctx._source.name = ctx._source.name.substring(0,5);",
"scripted_upsert": true,
"upsert" : {
"name": "foofoofoofoo",
"age": 29
}
}
それは、ES(ここでは、ID = 1)指定されたIDを持つ文書が見つからない場合は、それがインデックスupsert
内にある文書をすべき、ということを意味します指定されたスクリプトを実行します。ですから、わかるように、IDをURIに指定する必要があるため、自動的にIDを生成したい場合は、むしろ不便です。
結果:
GET http://localhost:9200/insert/test/1
{
"_index": "insert",
"_type": "test",
"_id": "1",
"_version": 1,
"found": true,
"_source": {
"name": "foofo",
"age": 29
}
}