Я следил за книгой «Elasticsearch: полное руководство». Эта книга устарела, и когда что-то не работало, я искал ее в Интернете и заставлял работать с более новыми версиями. Но я не могу найти ничего полезного для сопоставления и индексирования родителей и детей.
Например:
{
"mappings": {
"branch": {},
"employee": {
"_parent": {
"type": "branch"
}
}
}
}
Как я могу представить следующее сопоставление в новой версии Elasticsearch. И как я могу индексировать следующего родителя:
{ "name": "London Westminster", "city": "London", "country": "UK" }
и следующий ребенок:
PUT company/employee/1?parent=London
{
"name": "Alice Smith",
"dob": "1970-10-24",
"hobby": "hiking"
}
Кроме того, я использую клиент elasticsearch python, и было бы полезно предоставить примеры в нем.
Поле _parent было удалено в пользу поля соединения.
Тип данных соединения — это специальное поле, которое создает родительские/дочерние элементы. связь внутри документов одного индекса. Раздел отношений определяет набор возможных отношений внутри документов, каждый отношение, являющееся родительским именем и дочерним именем.
Считайте company
родителем, а employee
его дочерним элементом.
Отображение индекса:
{
"mappings": {
"properties": {
"my_join_field": {
"type": "join",
"relations": {
"company": "employee"
}
}
}
}
}
Родительский документ в контексте company
PUT /index-name/_doc/1
{
"name": "London Westminster",
"city": "London",
"country": "UK",
"my_join_field": {
"name": "company"
}
}
Дочерний документ
PUT /index-name/_doc/2?routing=1&refresh
{
"name": "Alice Smith",
"dob": "1970-10-24",
"hobby": "hiking",
"my_join_field": {
"name": "employee",
"parent": "1"
}
}