Поля скрипта в гибернации - PullRequest
0 голосов
/ 13 декабря 2018

Я использую hibernate-search -asticsearch 5.8.2.Final и не могу понять, как получить поля скрипта:

https://www.elastic.co/guide/en/elasticsearch/reference/5.6/search-request-script-fields.html

Есть ли способвыполнить эту функцию?

1 Ответ

0 голосов
/ 13 декабря 2018

Это невозможно в Hibernate Search 5.8.

В Hibernate Search 5.10 вы можете получить прямой доступ к клиенту REST , отправить запрос REST в Elasticsearch и получить результат в видеСтрока JSON, которую вам придется анализировать самостоятельно, но она очень низкоуровневая, и вы вообще не сможете использовать поисковые API поиска Hibernate (без DSL запроса, без загрузки управляемого объекта, без типа объекта прямого перевода => имя индекса,...).

Если вам нужна лучшая поддержка этой функции, не стесняйтесь открывать заявку на нашу JIRA , подробно описывающую, чего вы пытаетесь достичь и как выожидал, что сможет сделать это.В настоящее время мы работаем над Поиском 6.0, который приносит много улучшений, в частности, когда речь идет об использовании нативных функций Elasticsearch, так что это может быть что-то, что мы могли бы добавить в наше отставание.

РЕДАКТИРОВАТЬ : я забыл упомянуть, что, хотя вы не можете использовать серверные сценарии, вы все равно можете получить полный исходный код из ваших документов и выполнить некоторый анализ в вашем приложении для достижения аналогичного результата.Это будет работать даже в Поиске 5.8:

FullTextEntityManager fullTextEm = Search.getFullTextEntityManager(entityManager);
FullTextQuery query = fullTextEm.createFullTextQuery(
                    qb.keyword()
                    .onField( "tags" )
                    .matching( "round-based" )
                    .createQuery(),
                    VideoGame.class
            )
            .setProjection( ElasticsearchProjectionConstants.SCORE, ElasticsearchProjectionConstants.SOURCE );

Object[] projections = (Object[]) query.getSingleResult();
for (Object projection : projections) {
   float score = (float) projection[0];
   String source = (String) projection[1];
}

См. этот раздел документации .

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