0
以下は弾性検索の要求です。オブジェクトマッピングエラーgroovyスクリプトからJsonを弾性検索の配列タイプに追加するとき
post sample/item_type/1/_update
{
"script" : {
"file" : "my_script",
"params" : {
"slice_id" : 2,
"hash" : "xyjjz"
}
},
"upsert" : {
"item_body" : {
"name" : "dummy"
},
"attributes" : {
"name" : "attributes"
},
"versions": [
{
"version_id" : 1,
"begin_slice_id" : 1,
"end_slice_id" : 1,
"hash" : "xyz",
"count" : 1
}
],
"version_count" : 1
}
以下は、私が上記のリクエストで使用したgroovyスクリプトです。以下は
import groovy.json.JsonBuilder
Integer versionCount = ctx._source.version_count;
if (ctx._source.versions[versionCount-1].hash == hash)
{
ctx._source.versions[versionCount-1].end_slice_id = slice_id;
ctx._source.versions[versionCount-1].count++;
}
else
{
def json = new JsonBuilder()
def root = json{
"name" : "wh"
}
ctx._source.versions+=root.toString();
ctx._source.version_count += 1;
}
私は問題を理解
{
"error": {
"root_cause": [
{
"type": "mapper_parsing_exception",
"reason": "object mapping for [versions] tried to parse field [null] as object, but found a concrete value"
}
],
"type": "mapper_parsing_exception",
"reason": "object mapping for [versions] tried to parse field [null] as object, but found a concrete value"
},
"status": 400
を取得していますエラーで、バージョンの配列は、異なるタイプのオブジェクトを挿入なっています。最初はクエリ本体から直接、次にgroovyスクリプトからは次のようになります。しかし、どのようにして、JsonをGroovyから挿入して、弾性検索をしなくてもマッピングについて不平を言います。前もって感謝します。