2015-06-29 2 views
8

В реляционной БД у меня есть две таблицы, связанные внешним ключом, с типичным отношением «один ко многим». Я хотел бы перевести эту схему в ElasticSearch, поэтому я исследовал и нашел два варианта: nested и parent-child. Моя конечная цель состояла в том, чтобы визуализировать этот набор данных в Kibana 4.Могу ли я использовать отношения родитель-ребенок в Кибане?

Родительский ребенок казался наиболее подходящим, поэтому я опишу шаги, которые я выполнил, основываясь на официальном и нескольких примерах, которые я нашел в Интернете ,

curl -XPUT http://server:port/accident_struct -d ' 
{ 
"mappings" : { 
    "event" : { 
    }, 
    "details": { 
     "_parent": { 
     "type": "event" 
     } , 
    "properties" : {  
} 
    } 
} 
} 
'; 

здесь создать индекс accident_struct, который содержит два типа (соответствующих два реляционных таблиц): события и деталь.

Событие является родительским, поэтому каждый документ детали имеет связанное с ним событие.

Затем я загружаю документы, используя массовый API. Для проведения:

{"index":{"_index":"accident_struct","_type":"event","_id":"17f14c32-53ca-4671-b959-cf47e81cf55c"}} 
{values here...} 

И детали:

{"index":{"_index":"accident_struct","_type":"details","_id": "1", "_parent": "039c7e18-a24f-402d-b2c8-e5d36b8ad220" }} 

Событие ничего о детях не знаю, но у каждого ребенка (детали) необходимо установить его родителей. В документации ES я вижу, что родительский объект задан с использованием «parent», а в других примерах я вижу его с помощью «_parent». Интересно, какой правильный вариант (хотя на данный момент ни один не работает для меня).

Запросы успешно завершены, и я вижу, что количество документов, содержащихся в индексе, соответствует сумме событий + типов.

Я также могу запросить родителей для детей и детей для родителей, на ES. Например:

curl -XPOST host:port/accident_struct/details/_search?pretty -d '{ 
    "query" : { 
     "has_parent" : { 
      "type" : "event", 
       "query" : { 
        "match_all" : {} 
       } 
     } 
    } 
}' 

После установки индекса на Kibana, я могу перечислить все поля из родителей и ребенка. Однако, если я перейду на вкладку «открыть», будут указаны только родительские поля.

Если я снимите коробку с надписью «скрыть отсутствующие поля», поля из дочерних документов отображаются в виде серым цветом, наряду с сообщением об ошибке (см рисунок)

enter image description here

Могу ли я делать что-то не так или родитель-ребенок не поддерживается в Kibana4? И если это не поддерживается, какова будет лучшая альтернатива для представления этого типа отношений?

ответ

Смежные вопросы