Проблема индексации Elasticsearch 5.3: дети иногда попадают на осколки, отличные от своих родителей после индексации. Это предотвращает использование запросов hasChild и hasParent к индексу.
Индекс (myindex_v001) содержит три типа: задачи, документы, назначения. При создании индекса документы отображаются как дочерние элементы задач, а назначения отображаются как дочерние элементы документов.
{
"myindex_v001": {
"mappings": {
"tasks": {
"_all": {
"analyzer": "default",
"search_analyzer": "default_search"
},
...
}
{
"myindex_v001": {
"mappings": {
"documents": {
"_all": {
"analyzer": "default",
"search_analyzer": "default_search"
},
"_parent": {
"type": "tasks"
},
"_routing": {
"required": true
},
...
}
{
"myindex_v001": {
"mappings": {
"assignments": {
"_all": {
"analyzer": "default",
"search_analyzer": "default_search"
},
"_parent": {
"type": "documents"
},
"_routing": {
"required": true
},
...
}
Вся индексация выполняется в службе Java. Java делает REST-вызов (PUT) по URL-адресу, указывая индекс, тип и parent_id. Тот же код используется для индексирования задач, документов и назначений.
При индексации документов (http://eshost: порт / myindex / documents / {document_id}? Parent = {task_id }) каждый проиндексированный документ попадает в тот же сегмент, что и его родительская задача, как и ожидалось. Запросы hasChild прекрасно работают для задач / документов.
Однако при индексации назначений (http://eshost: порт / myindex / assignments / {assignment_id}? parent = {document_id}) назначение обычно индексируется на осколке, который отличается от его родительского документа. Это вызывает проблемы, поскольку запрос hasChild и hasParent не работает с документами / назначениями.
Кто-нибудь может подсказать, что может быть не так при индексации назначений?