У меня проблема с автоматическим индексированием эластичного поиска и удалением домена из базы данных, что вызывает исключение RoutingMissingException.
Если экземпляр поискового домена удаляется из базы данных ,asticsearch автоматически удаляет соответствующий документ из индекса.
Проблема заключается в том, что экземпляр домена является дочерним, и требуется маршрутизация, поэтому создается исключение RoutingMissingException.
Я использую Grails 2.3.11, а также плагин эластичного поиска 1.2.0 с эластичным поиском 2.3.3.
У моего индексаasticsearch есть два типа «родитель» и «ребенок» (переименованы для этого примера), которые, очевидно, имеют отношения родитель-ребенок.
Отображение ребенка:
"child": {
"_all": {
"analyzer": "german"
},
"_parent": {
"type": "parent"
},
"_routing": {
"required": true
},
...
А в классе дочернего домена:
...
static belongsTo = [parent: Parent]
static searchable = {
...
parent parent: true, reference: true
...
}
Теперь, если я удалю экземпляр дочернего домена в методе:
...
def deletableChild = Child.load(params.id)
flow.parentInstance.removeFromChilds(deletableChild)
deletableChild.delete()
...
Я получаю следующую ошибку:
ОШИБКА [12:44:17] [IndexRequestQueue]: сбой массового элемента: [index] RoutingMissingException [маршрутизация требуется для [index] / [child] / [3790]]
А в журнале эластичного поиска:
[2018-08-24 12:44:17,314][WARN ][action.delete ] [Outrage] unexpected error during the primary phase for action [indices:data/write/delete], request [delete {[index][child][3790]}]
[index] RoutingMissingException[routing is required for [index]/[child]/[3790]]
at org.elasticsearch.action.delete.TransportDeleteAction.resolveAndValidateRouting(TransportDeleteAction.java:118)
at org.elasticsearch.action.delete.TransportDeleteAction.resolveRequest(TransportDeleteAction.java:100)
at org.elasticsearch.action.delete.TransportDeleteAction.resolveRequest(TransportDeleteAction.java:54)
Если я установлю для disableAutoIndex значение true и вручную удаляю дочерний элемент из индекса с помощью? Routing = id & parent = id, это работает. Я пропускаю некоторые настройки, которые мне нужно сделать, чтобы autoIndex тоже работал или что-то в этом роде?