需求
处理ES数据时,有部分数据在存储时,是将list转为string,并使用了逗号作为连接的,而在查询时,又希望以逗号作为分词索引,以方便进行查询匹配
设计
ES默认分词里,是没有按照逗号分词的,但是支持自定义分词器,并且可以支持pattern的方式
实现
项目是springboot 2.1.0并集成了spring data elasticsearch。
1、在document映射文件中添加映射设置 @Setting
@Data
@Document(indexName = XXX, type = XXX)
@Setting(settingPath = "commaAnalyzer.json")
public class XXXXX implements Serializable {
//注意type为Text,analyzer 的值与commaAnalyzer.json中设置的名称一致
@Field(type = FieldType.Text, analyzer = "comma")
private String xxx;
}
其中commaAnalyzer.json 放在 resources下面
{
"index": {
"number_of_replicas": "5"
},
"analysis": {
"analyzer": {
"comma": {
"type": "pattern",
"pattern":","
}
}
}
}
则会在项目启动时,会为该document添加一个解释器,规则为按逗号分词进行索引
2、查询过程中,使用带match的查询即可
总结
没什么好总结的