Spring-data-elasticsearch搜索多个索引中的特定字段
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring-data-elasticsearch搜索多个索引中的特定字段相关的知识,希望对你有一定的参考价值。
我尝试在多个索引中搜索特定字段。我有两个指数country
和region
。这两个指数都有一个名为name
的字段。
我可以使用name
在我的查询中指定我的字段elasticsaerchTemplate
和我的索引:
@Override
public Page<SearchHit> searchAllTest(String text) {
QueryBuilder queryBuilder = QueryBuilders.boolQuery()
.should(QueryBuilders.queryStringQuery(text).field("name"));
NativeSearchQuery nativeSearchQuery = new NativeSearchQueryBuilder()
.withQuery(queryBuilder)
.withIndices("region", "country").build();
ResultsExtractor<Page<SearchHit>> rs = new ResultsExtractor<Page<SearchHit>>() {
@Override
public Page<SearchHit> extract(SearchResponse response) {
List<SearchHit> hits = Arrays.asList(response.getHits().getHits());
return new PageImpl<SearchHit>(hits, PageRequest.of(0, 10), response.getHits().getTotalHits());
}
};
return elasticsearchTemplate.query(nativeSearchQuery, rs);
}
此代码适用于在两个索引中搜索字段名称。但我想在索引name
中指定字段region
并举例说明一个提升。
简单来说:
- Field
name
属于region
指数并获得提振。 - 场
name
属于指数country
并且没有得到提升。
有没有办法为特定索引指定字段?
答案
尝试使用withIndexBoost
方法:
NativeSearchQuery nativeSearchQuery = new NativeSearchQueryBuilder()
.withQuery(queryBuilder)
.withIndicesBoost(Arrays.asList(new IndexBoost[] {new IndexBoost("region", 2.0f)}))
.withIndices("region", "country").build();
以上是关于Spring-data-elasticsearch搜索多个索引中的特定字段的主要内容,如果未能解决你的问题,请参考以下文章
使用 spring-data-elasticsearch 的多租户
spring-data-elasticsearch 在多个索引中搜索特定字段
springboot 集成 spring-data-elasticsearch
nodeBuilder() 已被 Elasticsearch 删除,但 spring-data-elasticsearch 文档仍然包含使用 nodeBuilder() 的配置