Elasticsearch中文搜索问题,单字可以,多字不行的问题。
第一使用IK分词器,版本要对应,下载到elasticsearch/plugin目录下,并新建ik目录
第二步配置elasticsearch
@Configuration
public class ElasticSearchClientConfig {
@Bean
public RestHighLevelClient restHighLevelClient(){
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(
new HttpHost("127.0.0.1", 9200, "http")));
return client;
}
}
第三配置实体类
@Document注解之后,默认情况下这个实体中所有的属性都会被建立索引、并且分词。
* 我们通过@Field注解来进行详细的指定,如果没有特殊需求,那么只需要添加@Document即可。
* @Field这里ik_max_word是按最细粒度分词,ik_smart是按最粗粒度分词。
*在搜索的时候用粗粒度,在写入的时候用细粒度。
* @author jun
* @since 2020-06-06
*/
@Document(indexName = "article",type = "article")
public class Article implements Serializable {
@Field(type = FieldType.Text, searchAnalyzer = "ik_smart", analyzer = "ik_max_word")
private String title;
@Document注解之后,默认情况下这个实体中所有的属性都会被建立索引、并且分词。
@Field这里ik_max_word