Spring-data-elasticsearch搜索多个索引中的特定字段

时间:2018-02-21 13:06:07

标签: java spring-boot elasticsearch spring-data spring-data-elasticsearch

我尝试搜索多个索引中的特定字段。我有两个索引countryregion。两个索引都有一个名为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并举例说明一个提升。

简单来说:

  • 字段name属于索引region并获得提升。
  • 字段name属于索引country,无法获得提升。

有没有办法为特定索引指定字段?

1 个答案:

答案 0 :(得分:1)

尝试使用import re s = 'RANDOM 1 ABBBABBBA SDFSBSBS WBWBSBW WBWBWBWB 10 EBEBEBEB EHRHSHSD EBWBBSHSHSB //' pattern = r'(?<=RANDOM).*?(?=//)' match = re.search(pattern, s) textBetween = match.group(0) notNumeric = re.sub(r'\d', '', textBetween) print(notNumeric) 方法:

withIndexBoost