我是休眠 Elasticsearch 的新手。我浏览了官方文档,发现要从 Elasticsearch 中获取数据,我必须编写以下代码。
FullTextSession fullTextSession = Search.getFullTextSession(session);
QueryDescriptor query = ElasticsearchQueries.fromQueryString("title:tales");
List<?> result = fullTextSession.createFullTextQuery(query, ComicBook.class).list();
但我试图了解如何将多个 QueryDescriptor 组合到 BooleanJunction 中,因为它只接受 lucene 查询。
最佳答案
ElasticsearchQueries.fromQueryString
是一种避免 Hibernate Search DSL 的方法,其中包括 BooleanJunction
尤其。您可以使用 ElasticsearchQueries.fromQueryString
,或 Hibernate Search DSL,但不能同时在同一个查询中。
如果你真的想坚持 ElasticsearchQueries.fromQueryString
,这就变成了理解 Elasticsearch 查询语法的问题。像这样的东西应该可以解决问题
FullTextSession fullTextSession = Search.getFullTextSession(session);
QueryDescriptor query = ElasticsearchQueries.fromQueryString("title:tales AND someOtherField:someOtherValue");
List result = fullTextSession.createFullTextQuery(query, ComicBook.class).list();
您可以查看 Elasticsearch 文档以获取有关语法的更多信息:https://www.elastic.co/guide/en/elasticsearch/reference/2.4/query-dsl-query-string-query.html
请注意,除非您的查询特别复杂,否则您不需要使用
ElasticsearchQueries.fromQueryString
; Hibernate Search DSL 应该同样好用,并且可能会节省您一些时间来尝试修复您的查询(因为您将使用 Java 代码,它主要在编译时检查,而不是在运行时验证的字符串查询)。更多关于查询 DSL 的信息可以在这里找到:https://docs.jboss.org/hibernate/stable/search/reference/en-US/html_single/#search-query
关于elasticsearch - 如何在休眠 Elasticsearch 中组合多个QueryDescriptor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44389310/