承接上一篇:学习提高:Elasticsearch7.X 多层嵌套查询SpringBoot项目,源码示例,NativeSearchQuery和elasticsearchRestTemplate多级嵌套查询搜索实现
这里主要看如何进行配置不区分大小写以及搜索实现。
"index.max_result_window" : "10000000",
"index.mapping.nested_objects.limit": "10000000",
"index.refresh_interval":"1s",
"analysis": {
"normalizer": {
"lowercase_normalizer": {
"type": "custom",
"char_filter": [],
"filter": [
"lowercase"
]
}
}
}}
/**
* 区名称,举例:东南文化园A-a区
*/
@Field(type = FieldType.Keyword, normalizer = "lowercase_normalizer")
private String districtName;
@Autowired
private ElasticsearchRestTemplate elasticsearchRestTemplate;
@Test
public void testSearch(){
QueryBuilder provinceItemsQuery = QueryBuilders.nestedQuery("cityInfos.districtInfos",
QueryBuilders.boolQuery()
// "东南文化园A-A区"
.should(QueryBuilders.matchQuery("cityInfos.districtInfos.districtName", "东南文化园a-a区")),
ScoreMode.Total);
//构建分页
NativeSearchQueryBuilder builder=new NativeSearchQueryBuilder();
NativeSearchQuery query=builder.withQuery(provinceItemsQuery)
.build();
SearchHits<ProvinceInfoEntity> search = elasticsearchRestTemplate.search(query, ProvinceInfoEntity.class);
Stream<SearchHit<ProvinceInfoEntity>> searchHitStream = search.get();
}
传送门:
Elasticsearch多层级嵌套模糊搜索高亮关键词实现
-------------如果对你有用,请给个赞,谢谢~~
-------------欢迎各位留言交流,如有不正确的地方,请予以指正。【Q:981233589】