我有大聚合的查詢,因此,我正在嘗試將命名查詢用于彈性搜索。我設法從屬性檔案中讀取查詢,但我無法讀取聚合。有沒有辦法從屬性檔案中讀取整個查詢和查詢聚合?
閱讀查詢的作業示例:
查詢存盤庫:
public interface UserRepository extends ExtendedElasticsearchRepository<User, Integer> {
//named query lookup found getUserQuery inside users-named-queries.properties and used its query
SearchHits<User> getUserQuery(Integer fieldId);
}
方法呼叫:
SearchHits<User> users = userRepository.getUserQuery(1); <- returns hits
Aggregations usersAggregations = users.getAggregations(); <- returns null beacouse there is no aggregation
應用程式:
@EnableElasticsearchRepositories(basePackages = "org...", repositoryBaseClass = CdpElasticsearchRepository.class, namedQueriesLocation = "classpath:*-named-queries.properties")
users-named-queries.properties
User.getUserQuery={"bool": { "filter": [{"term": {"fieldId": ?0}}]}}
理想的行為:
User.getUserQuery={"query":{"bool": { "filter": [{"term": {"fieldId": ?0}}]}}, "aggs": {"sum_field": {"sum": {"field": "fieldId"}}}}
錯誤
org.springframework.data.elasticsearch.UncategorizedElasticsearchException: Elasticsearch 例外 [type=parsing_exception, reason=unknown query [query]]; 嵌套例外是 ElasticsearchStatusException[Elasticsearch 例外 [type=parsing_exception, reason=unknown query [query]]]; 嵌套:ElasticsearchException[Elasticsearch 例外 [type=named_object_not_found_exception, reason=[1:10] 未知欄位 [query]]];
uj5u.com熱心網友回復:
好的,我學到了一些我還不知道的關于 Spring Data Elasticsearch 的知識:您可以在查詢屬性檔案中定義查詢作為使用@Query注釋函式的替代方法。謝謝你把我推到那個地方。
這些查詢與使用注解時相同@Query,這意味著只能將發送到 Elasticsearch 的搜索請求的查詢部分放入其中,而不能將 aggs或其他可能放入搜索請求正文的內容。
命名查詢的值以包裝查詢的形式發送到 Elasticsearch,該查詢僅包含查詢部分而不是aggs。
我同意能夠添加 aggs 或其他元素會很棒,我為此創建了一個問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/413758.html
標籤:
