gpt4 book ai didi

java - spring-data-elasticsearch 在多个索引中搜索特定字段

转载 作者:搜寻专家 更新时间:2023-10-31 20:31:59 25 4
gpt4 key购买 nike

我尝试在多个索引中搜索特定字段。我有两个索引 countryregion。这两个索引都有一个名为 name 的字段。

我可以使用 elasticsaerchTemplate 在我的查询中指定我的字段 name 和我的索引:

@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);
}

此代码有效并在两个索引中搜索字段名称。但我想在索引 region 中指定字段 name 并给予例如提升。

简单来说:

  • 字段 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();

关于java - spring-data-elasticsearch 在多个索引中搜索特定字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48906710/

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