gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 01:45:29 26 4
gpt4 key购买 nike

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com