一 、前言
之前的系统由于一些表的数据已经达到1~2百万行的数据了,而且还在与日俱增,一些条件比较复杂的检索,已经明显感觉到比较慢,影响用户的使用体验。所以引入的ElasiticSearch进行检索优化,效果还是比较好的。因为之前都没有怎么涉及到模糊检索这一块需求,只是为了速度引入了ES。更之前的认知,是知道引入ik分词器之后能对中文进行很好的分词,也进行过相关的模糊检索都没有出现问题。
二、问题
直到有个业务需要对电话号码进行模糊检索,发现只能精准检索,通过
@Field(type = FieldType.Long,analyzer="simple")
@Field(type = FieldType.Text,analyzer="simple")
非字母分词也还是不能检索出来。
之后还有对字母+数字的字段模糊检索的需求,更是没有办法实现。
三、解决思路
-
首先想到的思路是,之前数据录入ES的时候,都是以Json的形式。
bulkRequest.add(new IndexRequest("apply_car").source(JSONUtil.toJsonStr(ocApplyCars.get(j)), XContentType.JSON));
所以觉得是不是因为字符串不能数字分词的原因,所以尝试着在网上找到了,