Как я могу искать в Has Parent Query - PullRequest
0 голосов
/ 14 января 2019

Я пытался найти родительский запрос, но я не смог этого сделать, так как не могу найти подходящую процедуру для этого. Например, у меня есть таблица ролей, и у меня есть таблица пользователей, и я использую 1 для роли администратора, а в таблице пользователей у меня есть атрибут с именем user_role, и у меня есть запись с user_role = 1, как я могу сделать сопоставление, используя родительский запрос и искать соответственно.

Спасибо, Али.

https://www.elastic.co/guide/en/elasticsearch/reference/5.5/mapping-parent-field.html

не мог понять полностью.

1 Ответ

0 голосов
/ 16 января 2019

Давайте возьмем данные сопоставления и выборки из https://www.elastic.co/guide/en/elasticsearch/reference/5.5/mapping-parent-field.html:

PUT my_index
{
  "mappings": {
    "my_parent": {},
    "my_child": {
      "_parent": {
        "type": "my_parent" 
      }
    }
  }
}

PUT my_index/my_parent/1 
{
  "text": "This is a parent document"
}

PUT my_index/my_child/2?parent=1 
{
  "text": "This is a child document"
}

PUT my_index/my_child/3?parent=1&refresh=true 
{
  "text": "This is another child document"
}

Запрос на той же странице получает один родительский документ, поскольку оба дочерних документа совпадают:

GET my_index/my_parent/_search
{
  "query": {
    "has_child": { 
      "type": "my_child",
      "query": {
        "match": {
          "text": "child document"
        }
      }
    }
  }
}

С некоторыми небольшими изменениями вы сможете искать на has_parent:

GET my_index/my_child/_search
{
  "query": {
    "has_parent": { 
      "parent_type": "my_parent",
      "query": {
        "match": {
          "text": "parent"
        }
      }
    }
  }
}

PS: В 6.x это немного меняется. Если возможно, я бы сейчас перешел на 6, чтобы избежать боли при обновлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...