我尝试搜索多个索引中的特定字段。我有两个索引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
并举例说明一个提升。
简单来说:
name
属于索引region
并获得提升。name
属于索引country
,无法获得提升。有没有办法为特定索引指定字段?
答案 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