У вас скорее всего body2 нет в документе. Часть ctx._source.body2 пытается получить body2 его нет, она возвращает null на котором вы вызываете text2 и получаете ошибку.
body2 в новом индексе, его естественно нет.
А вот body в старом индексе пустые в первых документах при переиндексации.
Видимо так и получается.
Сейчас попробую. Спасибо.
Ну давайте разбираться. Когда у вас структура выглядит так: map.field = val то это транслируется в map.put("field", val). Если поле с именем field уже есть - оно переписывается, если нет - создается.
Однако, если у вас val = map.field, то это транслируется в val = map.get("field").
Теперь давайте рассмотрим, что происходит с map.foo.bar = val. В этом случае для bar применяется то же правило, что и в первом случае, потому что он стоит слева от присвоения, а для foo применяется второе правило, потому что он используется, чтобы получить доступ к bar.
Другими словами, это транслируется в map.get("foo").set("bar", val). Если в map элемента с именем foo нет, то map.get("foo") возвращает null, и все это превращается в null.set("bar", val).
Apache, Apache Lucene, Apache Hadoop, Hadoop, HDFS and the yellow elephant
logo are trademarks of the
Apache Software Foundation
in the United States and/or other countries.