版权声明:本文为博主原创文章,未经博主允许禁止转载(http://blog.csdn.net/napoay) https://blog.csdn.net/napoay/article/details/80170863
一、问题
今天群里一个同学提了一个问题,如何在搜索时指定分析器,实现自由切换。
二、分析
我们知道,分析器是写在mapping里面的,通过配置analyzer来指定的。如果没有额外的配置,analyzer中指定的分析器,既是索引期的分析器,又是搜索期的分析器。单独指定搜索期的分析器可以用search_analyzer覆盖。
三、解决
在搜索时指定分析器,只需要在构造Query的时候,增加一个analyzer配置。
普通的MatchQuery:
QueryBuilder matchQuery = QueryBuilders.matchQuery("title","足球")
指定搜索时分析器的MatchQuery:
QueryBuilder matchQuery = QueryBuilders
.matchQuery("title","足球")
.analyzer("ik_smart");