ElasticSearch match + запрос родительского идентификатора + фрагменты - PullRequest
0 голосов
/ 16 мая 2018

У меня есть родительско-дочерние отношения документов (родитель) и страниц (дочерний).Я хотел бы написать запрос, который получает все страницы из определенного документа, которые соответствуют строке поиска, а также получение фрагментов.Мой код до сих пор (с использованием библиотеки php):

[
    'size' => 100,
    'from' => 0,
    //this sets the snippets with highlight
    'highlight' => [
        'fields' => [
            'content' => (object)[]
        ]
    ],
    'query' => [
        'bool' => [
            'must' => [
                'match' => [
                    'content' => $_GET['search']
                ],

                //only get pages in this doc
                /*'parent_id' => [
                  'type' => 'page',
                  'id' => $hit['_id']
                ]*/

                'has_parent' => [
                    'type' => 'document',
                    'ids' => [
                        'values' => [$hit['_id']]
                    ]
                ]

            ],
            /*'filter' => [
                'term' => [
                    '_parent' => $hit['_id']
                ]
            ]*/
        ]
    ],


]; 

Как вы можете видеть, я пробовал предложения filter, has_parent и parent_id, но, похоже, ничего не работает, возвращая пустые наборы или ошибки.У кого-нибудь есть указания, как это сделать?

Спасибо!

1 Ответ

0 голосов
/ 16 мая 2018

Для всех, кто сталкивается с этим, я нашел ответ.Вы должны использовать фильтр запроса:

[
    'size' => 100,
    'from' => 0,
    //this sets the snippets with highlight
    'highlight' => [
        'fields' => [
            'content' => (object)[]
        ]
    ],
    'query' => [
        'filtered' => [
            'query' => [
                'match' => [
                    'content' => $_GET['search']
                ],
            ],
            //only get pages in this doc
            'filter' => [
                'ids' => [
                    'type' => 'document',
                    'values' => [$hit['_id']]
                ]
            ]
        ]
    ],


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