记录:easy-es java集成问题记录
1.easy-es DSL:自动生成一个与之对应的“.keyword” 去除**
问题:in 查询
先更改es 的映射,再更改java Bean
列:字段 location
// 字段keyword类型(不支持分词),字段映射为text类型(支持分词查询)
//es-client 的映射
//原
"location": {
"type": "keyword"
},
//改
"location": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_smart"
},
//同时支持
"location": {
"type": "text",
"fields": {
"keyword": { "type": "keyword", "ignore_above": 256 }
},
"analyzer": "ik_max_word",
"search_analyzer": "ik_smart"
},
Java代码:
//text类型(支持分词查询)
/**
* 归属地
* 用于下拉框 多选搜索
*/
@IndexField(fieldType = FieldType.TEXT, analyzer = Analyzer.IK_SMART, searchAnalyzer = Analyzer.IK_MAX_WORD)
private String location;
2.集成Easy-es 查询功能 LambdaEsQueryWrapper**
text = mysql like
keyword = in 或eq
//mysql =
LambdaEsQueryWrapper<实体类> wrapper = new LambdaEsQueryWrapper<>();
wrapper.eq("字段.keyword",值);
//mysql!=
//LambdaEsQueryWrapper 没有ne 换成 not 里面 再写eq
wrapper.not(o->{
o.eq("字段.keyword",值);
});
//mysql in
//查看1的记录 改映射为 text类型,用于分词搜索
List<String> value=new ArrayList<>();
wrapper.in("字段.keyword",值);
//mysql like
List<String> value=new ArrayList<>();
wrapper.in("字段",值);