ElasticSearch от _update_by_query как обновить типизированное поле XContentType.JSON

Я сохранил схему в ES примерно так:

      {
  "userId123": {
    "userPhoneInfo": {
      "phoneBrand": "Apple",
      "phoneOS": "IOS"
    },
    "userName": "XYZ",
    "userPhoneNo": "ABCDEFG"
  }
}

здесь userId123 - это _id. Хочу обновить userPhoneInfo. он может быть нулевым или иметь значение json. ниже _update_by_query работает для обоих случаев

      {
  "query": {
    "match": {
      "userPhoneNo": "ABCDEFG"
    }
  },
    "script": {
        "source": "ctx._source.userPhoneInfo=params.userPhoneInfo;ctx._source.userName=params.userName;",
        "lang": "painless",
        "params": {
            "userPhoneInfo" : {
            "phoneBrand": "OnePlus",
            "phoneOS": "android",
            },
            "userName":"XYZ"
        }
  }
}

В java я использовал ниже скрипт и пармы:

          new Script(Script.DEFAULT_SCRIPT_TYPE, 
            Script.DEFAULT_SCRIPT_LANG, 
            "ctx._source.userPhoneInfo.phoneBrand = params.phoneBrand;" + 
                    "ctx._source.userPhoneInfo.phoneOS = params.phoneOS;",
            params);

Map<String, Object> params = new HashMap<>();
params.put("phoneBrand", "OnePlus");
params.put("phoneOS", "android");

но получаю это исключение:! org.elasticsearch.ElasticsearchException: исключение Elasticsearch [type = null_pointer_exception, reason =null]! в org.elasticsearch.ElasticsearchException.innerFromXContent

Если я использую скрипт и такие параметры

      new Script(Script.DEFAULT_SCRIPT_TYPE,
                Script.DEFAULT_SCRIPT_LANG,
                "ctx._source.userPhoneInfo = params.userInfo;",
                params);

Map<String, Object> params = new HashMap<>();
params.put("userPhoneInfo", new UserPhoneInfo("OnePlus","android"));

Получаю это исключение! java.lang.IllegalArgumentException: невозможно записать xcontent для неизвестного значения класса типа com.ffb.pno.dtos.listingMeta.PPUAttributes! на org.elasticsearch.common.xcontent.XContentBuilder.unknownValue

Пожалуйста, помогите мне, что я делаю не так

0 ответов

Другие вопросы по тегам