Мы обновляемся до ElasticSearch 2.0 и столкнулись с проблемой с нашими сопоставлениями в Nest 1.7.0: у нас есть два типа, которые имеют общее поле (с одинаковым форматом):
"@timestamp": {
"type": "date",
"format": "epoch_millis||dateOptionalTime"
}
Когда мы пытаемся добавить сопоставление при запуске для одного из затронутых типов (в настоящее время мы PUT
делаем сопоставления каждый раз), мы возвращаем эту ошибку:
{
"error": {
"root_cause": [{
"type": "merge_mapping_exception",
"reason": "Merge failed with failures {[mapper [@timestamp] is used by multiple types. Set update_all_types to true to update [format] across all types.]}"
}],
"type": "merge_mapping_exception",
"reason": "Merge failed with failures {[mapper [@timestamp] is used by multiple types. Set update_all_types to true to update [format] across all types.]}"
},
"status": 400
}
Мы используем сопоставление на основе кода, описанное здесь, но я не вижу способ повесить строку запроса на этот метод, не прибегая к свойству Raw
нашего клиента, используя что-то вроде этого:
_client.Raw.IndicesPutMapping("ourindex", "ourtype", PutMappingDescriptorObj, parameters => parameters.AddQueryString("update_all_types", null));
Я просмотрел ветвь 2.0 Nest, но не нашел ссылок на этот параметр строки запроса update_all_types для этих вызовов сопоставления.
Предполагая, что вызов IndicesPutMapping()
может работать, это наш единственный вариант на данный момент? Я начинаю задаваться вопросом, должны ли мы вместо этого добавлять эти сопоставления только условно.