我在项目中发现如果我添加索引时的对象的属性中包含其他自定义对象,则在查询时会报错,示例如下:
我要添加 的索引对象 如下,属性中包含User对象(关键就在这个User对象)
public class Blog {
private Integer id;
private String blogTitle; // 博客标题
private String blogAbstract; // 博客摘要
private String blogContent; // 博客内容
private String blogKey; // 博客关键字
private BlogCategory blogCategory; // 博客分类
private User user; // 博客创建者
}
public static Map<String, Object> addIndex(Client client, Blog source,
String index, String type, String id)
throws JsonGenerationException, JsonMappingException, IOException {
Map<String, Object> map = new HashMap<String, Object>();
byte[] json = mapper.writeValueAsBytes(source);
IndexResponse response = client.prepareIndex(index, type, id)
.setSource(json).get();
map.put("_index", response.getIndex());
map.put("_type", response.getType());
map.put("_id", response.getId());
map.put("_version", response.getVersion());
map.put("created", response.isCreated());
closeClient(client);
return map;
}
User属性也能正常添加,但是使用下面的代码查询时就有问题 :
public static List<Blog> queryIndex(Client client, String index,
String type, String searchKey, String searchValue) throws JsonParseException, JsonMappingException, IOException
{
QueryBuilder qb = new BoolQueryBuilder().must(QueryBuilders.matchQuery(
searchKey, searchValue));
SearchResponse response = client.prepareSearch(index).setTypes(type)
.setQuery(qb).execute().actionGet();
SearchHit[] hits = response.getHits().getHits();
List<Blog> blogList = new ArrayList<Blog>();
for (SearchHit hit : hits) {
// Blog blog = mapper.readValue(hit.getSourceAsString(), Blog.class);
Blog blog = mapper.readValue(hit.getSourceAsString(), Blog.class);
blogList.add(blog);
}
client.close();
return blogList;
}
[org.elasticsearch.plugins] - [Thunderclap] loaded [], sites [] org.codehaus.jackson.map.JsonMappingException: Conflicting setter definitions for property "userId": com.blog.entity.User#setUserId(1 params) vs com.blog.entity.User#setUserId(1 params) at org.codehaus.jackson.map.deser.StdDeserializerProvider._createAndCache2(StdDeserializerProvider.java:315) at org.codehaus.jackson.map.deser.StdDeserializerProvider._createAndCacheValueDeserializer(StdDeserializerProvider.java:290) at org.codehaus.jackson.map.deser.StdDeserializerProvider.findValueDeserializer(StdDeserializerProvider.java:159) at org.codehaus.jackson.map.deser.std.StdDeserializer.findDeserializer(StdDeserializer.java:620) at org.codehaus.jackson.map.deser.BeanDeserializer.resolve(BeanDeserializer.java:379) at org.codehaus.jackson.map.deser.StdDeserializerProvider._resolveDeserializer(StdDeserializerProvider.java:407) at org.codehaus.jackson.map.deser.StdDeserializerProvider._createAndCache2(StdDeserializerProvider.java:352) at org.codehaus.jackson.map.deser.StdDeserializerProvider._createAndCacheValueDeserializer(StdDeserializerProvider.java:290) at org.codehaus.jackson.map.deser.StdDeserializerProvider.findValueDeserializer(StdDeserializerProvider.java:159) at org.codehaus.jackson.map.deser.std.StdDeserializer.findDeserializer(StdDeserializer.java:620) at org.codehaus.jackson.map.deser.BeanDeserializer.resolve(BeanDeserializer.java:379) at org.codehaus.jackson.map.deser.StdDeserializerProvider._resolveDeserializer(StdDeserializerProvider.java:407) at org.codehaus.jackson.map.deser.StdDeserializerProvider._createAndCache2(StdDeserializerProvider.java:352) at org.codehaus.jackson.map.deser.StdDeserializerProvider._createAndCacheValueDeserializer(StdDeserializerProvider.java:290) at org.codehaus.jackson.map.deser.StdDeserializerProvider.findValueDeserializer(StdDeserializerProvider.java:159) at org.codehaus.jackson.map.deser.StdDeserializerProvider.findTypedValueDeserializer(StdDeserializerProvider.java:180) at org.codehaus.jackson.map.ObjectMapper._findRootDeserializer(ObjectMapper.java:2829) at org.codehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:2728) at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1863) at com.blog.util.ElasticsearchUtil.queryIndex(ElasticsearchUtil.java:279) at com.blog.controller.IndexController.query(IndexController.java:86) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:219) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:745) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:686) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:838) at javax.servlet.http.HttpServlet.service(HttpServlet.java:650) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812) at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:442) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1083) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:640) at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2517) at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2506) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.IllegalArgumentException: Conflicting setter definitions for property "userId": com.blog.entity.User#setUserId(1 params) vs com.blog.entity.User#setUserId(1 params) at org.codehaus.jackson.map.introspect.POJOPropertyBuilder.getSetter(POJOPropertyBuilder.java:199) at org.codehaus.jackson.map.deser.BeanDeserializerFactory.addBeanProps(BeanDeserializerFactory.java:1161) at org.codehaus.jackson.map.deser.BeanDeserializerFactory.buildBeanDeserializer(BeanDeserializerFactory.java:707) at org.codehaus.jackson.map.deser.BeanDeserializerFactory.createBeanDeserializer(BeanDeserializerFactory.java:636) at org.codehaus.jackson.map.deser.StdDeserializerProvider._createDeserializer(StdDeserializerProvider.java:401) at org.codehaus.jackson.map.deser.StdDeserializerProvider._createAndCache2(StdDeserializerProvider.java:310) ... 62 more
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
http://stackoverflow.com/questions/14706600/how-to-solve-conflicting-getter-definitions-for-property-in-jackson
Json串反序列化User时出错了,User类你还没贴出来。
夜行侠老师视频教学:es问题汇总
http://www.itjoin.org/
1、如何防止索引被删除
2、搜索的精准性控制
3、解决搜索中英文数字混合
4、搜索中in查询
5、安装问题
6、es源码内部是如何做到插件化扩展
7、统计时展示不全
8、搜索条件过多,内容过长报错
9、索引某一字段内容太大
10、自动补全设计
11、es的分布式如何实现RPC底层
12、es的分片机制
13、head插件的使用
14、es分片和副本级的是原理
15、如何做到只更新部分数据
16、数组在index何制定
17、es搜索结果窗口太大
18、groupby里如何
19、es底层新增和删除索引的全过程
20、es底层检索的全过