elasticsearch - 如何在休眠 Elasticsearch 中组合多个QueryDescriptor

标签 elasticsearch hibernate-search

我是休眠 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/

相关文章:

java - hibernate 搜索中分析器的编译时错误

java - 无法将 org.hibernate.search.hcore.impl.HibernateSearchIntegrator 转换为 org.hibernate.integrator.spi.Integrator

java - 与其他依赖项的 hibernate-search-orm 冲突

java - 使用 Hibernate 困惑进行搜索

elasticsearch - 尝试在Elasticsearch中删除索引的所有数据

elasticsearch - 如何使用.net elasticsearch客户端查询logstash索引?

elasticsearch - 如何在 filebeat 5 中强制重建日志数据

java - 如何在相关实体中搜索(Hibernate 搜索)

python - 如何获取所有包含elasticsearch-dsl查询关键字的结果?

python - python子进程完成后如何执行发布操作