Панель поиска Symfony Ajax с Elasticsearch - PullRequest
0 голосов
/ 07 апреля 2019

Я хочу использовать Elasticsearch в моем проекте.У меня есть следующий код:

SearchController

/**
 * @Route("/api/elasticsearch" )
 */
public function viewElasticsearch(Request $request)
{
    $query = $request->get('term');

    if (empty($query)) {
        return new JsonResponse([]);
    }

    if (substr($query, -1) !== '*') {
        $query .= '';
    }

    $finder = $this->container->get('fos_elastica.finder.app.product');
    $products = $finder->find($query);

    foreach ($products as $entity) {
        $result['results'][] = [
            'id' => $entity->getId(),
            'text' => $entity->getName(),
            'sku' => $entity->getSku(),
        ];
    }

    return new JsonResponse($result);
}

Javascript

<script>
    $('.js-data-example-ajax').select2({
        ajax: {
            url: '/product/api/elasticsearch',
            dataType: 'json',
            width: 'resolve', // need to override the changed default
            minimumResultsForSearch: -1,
            dropdownCssClass: 'select2-hidden',
            }
    });
</script>

Если я позвоню поисковый запросчерез командную строку:

curl -X GET 'http://localhost:9200/app/product/_search?q=*iphone*&size=500'

Я получаю 381 результат поиска выше, но если я делаю тот же поиск из Symfony, я получаю 8 результатов.Как выполнить поиск по шаблону в Symfony?

1 Ответ

0 голосов
/ 07 апреля 2019

Средство поиска Elastichsearch показывает 10 результатов по умолчанию. Если вы хотите изменить его, вам нужно добавить второй метод в метод find со значением, которое вы хотите. В моем случае я хочу показать 500 результатов.

$finder = $this->container->get('fos_elastica.finder.app.product');
$products = $finder->find($query, '500');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...