Я новичок в " Elasti c Поиск " и в настоящее время пытаюсь понять, как ES поддерживает отношения " Parent-Child ". Я начал со следующей статьи:
https://www.elastic.co/blog/managing-relations-inside-elasticsearch
Но эта статья основана на старой версии ES, и в настоящее время я использую ES 7.5, в которой говорится:
Поле _parent было удалено в пользу поля соединения.
В настоящее время я следую этой статье:
https://www.elastic.co/guide/en/elasticsearch/reference/7.5/parent-join.html
Однако я не могу получить желаемый результат.
У меня есть сценарий, в котором у меня есть два индекса: «Человек» и «Дом». Каждый «Человек» может иметь несколько «Домов», которые в основном являются отношением «один ко многим». Проблема в том, что когда я запрашиваю выборку всех домов, чей родитель - «XYZ», ответом будет ноль.
Ниже приведены структура моих индексов и поисковый запрос:
Индекс личности:
Запрос URL: http://hostname/person
{
"mappings": {
"properties": {
"name": {
"type": "text"
},
"person_home": {
"type": "join",
"relations": {
"person": "home"
}
}
}
}
}
Домашний индекс:
Запрос URL: http://hostname/home
{
"mappings": {
"properties": {
"state": {
"type": "text"
},
"person_home": {
"type": "join",
"relations": {
"person": "home"
}
}
}
}
}
Добавление личных данных Индекс
URL-адрес запроса: http://hostname/person/_doc/1
{
"name": "shujaat",
"person_home": {
"name": "person"
}
}
Добавление данных в домашний индекс
URL-адрес запроса: http://hostname/home/_doc/2?routing=1&refresh
{
"state": "ontario",
"person_home": {
"name": "home",
"parent": "1"
}
}
Запрос для извлечения данных: (Для извлечения всех записей, кто является родителем с идентификатором человека "1")
URL запроса: http://hostname/person/_search
{
"query": {
"has_parent": {
"parent_type": "person",
"query": {
"match": {
"name": "shujaat"
}
}
}
}
}
ИЛИ
{
"query": {
"has_parent": {
"parent_type": "person",
"query": {
"match": {
"_id": "1"
}
}
}
}
}
Ответ:
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 0,
"relation": "eq"
},
"max_score": null,
"hits": []
}
}
Я не могу понять, что мне здесь не хватает или что не так с вышеупомянутый запрос, так как он не возвращает никаких данных.