【发布时间】:2018-08-01 01:57:09
【问题描述】:
我尝试在多个索引中搜索特定字段。我有两个索引country 和region。这两个索引都有一个名为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并且没有提升。
有没有办法为特定索引指定字段?
【问题讨论】:
-
您可以在索引级别进行查询时间提升。 elastic.co/guide/en/elasticsearch/guide/current/… 或字段级别的索引时间提升,elastic.co/guide/en/elasticsearch/reference/current/…(虽然不推荐使用索引时间提升)
标签: java spring-boot elasticsearch spring-data spring-data-elasticsearch