Elasticsearch получает исходные поля _parent из дочернего документа

php elasticsearch

185 просмотра

1 ответ

40 Репутация автора

Я создал отношения родитель / ребенок в Elasticsearch.

  • Пользователь - родитель
  • Имидж - ребенок

Я делаю фильтрацию тысяч изображений, небольшой пример кода

$query = array(
          'query_string' => array(
                    'query' => $queryParams['category'],
                    'default_operator' => 'AND',
                    'default_field' => 'allParentCategories',
          )
);

$reqParams['body'] = array(
        'query' => array(
            'filtered' => array(
                'query' => $query,
                'filter' => array(
                    'bool' => array(
                        'must' => $filtersArray,
                    ),
                ),
            ),
        )
);

это то, что я получаю в результате

array (size=8)
      '_index' => string 'images-15' (length=9)
      '_type' => string 'image' (length=5)
      '_id' => string '48026' (length=5)
      '_score' => null
      '_routing' => string '2' (length=1)
      '_parent' => string '2' (length=1)
      '_source' => 
        array (size=15)
          'thumb' => string 'fasdfas' (length=52)
          'author' => 
            array (size=6)
              'firstName' => string 'asdfas' (length=3)
              'lastName' => string 'asdf' (length=3)
              'fullName' => string 'asdfas' (length=7)
              'id' => string '2' (length=1)
              'picture' => null
              'username' => string 'asdfa' (length=6)
          'downloadURL' => string 'asdfasd' (length=87)
          'creationDate' => string '2016-07-15 11:20:12' (length=19)
          'tags' => 
            array (size=0)
              empty
              'size' => 
            array (size=2)
              'bytes' => int 735025
              'formatted' => string '717.8 KB' (length=8)
          'downloads' => int 0
          'added_by' => int 2
          'width' => int 900
          'is_icon' => boolean false
          'is_vector' => boolean false
          'id' => int 48026
          'views' => int 0
          'height' => int 900
          'likes' => int 1
      'sort' => 
        array (size=2)
          0 => int 1468581612000
          1 => int 48026

Я уже пробовал такую ​​вещь:

$reqParams['body'] = array(
        'query' => array(
            'has_parent' => [
                'parent_type' => 'user',
                'query' => [
                    'match_all' => []
                ],
                'inner_hits' => [
                   '_source' => ['*']
                ]
            ],
        )
);
  1. В первом случае я могу получить только родительский идентификатор, который бесполезен для моих целей.

  2. Во втором случае у меня есть доступ ко всем полям _source родительского документа, но я не могу выполнить фильтрацию.

Что мне нужно, так это получить доступ к полям _parent _source и сохранить фильтрацию изображений.

Автор: smokeelow Источник Размещён: 17.07.2016 09:50

Ответы (1)


0 плюса

40 Репутация автора

Решение

Это то, что я сделал. Таким образом, я имею доступ к родительским полям и сохраняю результаты поиска, как и раньше. введите описание изображения здесь

Автор: smokeelow Размещён: 18.07.2016 10:08
Вопросы из категории :
32x32