springboot2.2整合ES6.8遇到的问题
索引有用到嵌套类型nested,java类中,注解了类型
@Field(type = FieldType.Nested, includeInParent = true,index = true, store = true)
private List<Param> params;
但是创建完之后,类型并没有生效,查询索引的结果
"params": {
"properties": {
"name": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"value": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
params并没有type,在通过索引搜索的时候,控制台报异常
AggregationExecutionException[[nested] nested path [params] is not nested]
在网上查了资料,说的是springboot和es的对象映射有BUG,nested类型的无法正常映射,建议用手动通过json映射解决。
我创建了json文件
{
"mappings": {
"goods": {
"id": {
。。。。。。。
params": {
"type": "nested",
"properties": {
"name": {
"type": "keyword",
"fielddata": true,
"index":"not_analyzed"
},
"value": {
"type": "keyword",
"fielddata": true,
"index":"not_analyzed"
}
}
}
。。。。。。。。。
并且在java映射类上加上注解
@Mapping(mappingPath = "goodsIndex.json")
但是没有用,创建的索引params还是没有type,搜索异常依旧。
求大神指点迷津。
索引有用到嵌套类型nested,java类中,注解了类型
@Field(type = FieldType.Nested, includeInParent = true,index = true, store = true)
private List<Param> params;
但是创建完之后,类型并没有生效,查询索引的结果
"params": {
"properties": {
"name": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"value": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
params并没有type,在通过索引搜索的时候,控制台报异常
AggregationExecutionException[[nested] nested path [params] is not nested]
在网上查了资料,说的是springboot和es的对象映射有BUG,nested类型的无法正常映射,建议用手动通过json映射解决。
我创建了json文件
{
"mappings": {
"goods": {
"id": {
。。。。。。。
params": {
"type": "nested",
"properties": {
"name": {
"type": "keyword",
"fielddata": true,
"index":"not_analyzed"
},
"value": {
"type": "keyword",
"fielddata": true,
"index":"not_analyzed"
}
}
}
。。。。。。。。。
并且在java映射类上加上注解
@Mapping(mappingPath = "goodsIndex.json")
但是没有用,创建的索引params还是没有type,搜索异常依旧。
求大神指点迷津。
1 个回复
nofearinmyheat - 新时代农民工
赞同来自: niujiang777