[ https://issues.apache.org/jira/browse/SOLR-4080?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Luis Cappa Banda updated SOLR-4080: ----------------------------------- Description: Atomic updates with a CloudSolrServer object instance doesn´t work properly. - Code snippet: // CloudSolrSever instance. LBHttpSolrServer lbSolrServer = new LBHttpSolrServer(solrEndpoints); CloudSolrServer cloudSolrServer = new CloudSolrServer(zookeeperEndpoints, lbSolrServer); // SolrInputDocument to update: SolrInputDocument do = ne SolrInputDocument(); doc.addField("id", "myId"); Map<String, List<String>> operation = new HashMap<String, List<String>>(); operation.put("set", [[a list of String elements]]); // I want a set operation to override field values. doc.addField("fieldName", operation); // Atomic update operation. cloudSolrServer.add(doc); - Result: doc: { id: "myId", fieldName: [ "{set=values}" ], ... } - Changing map from snippet like Map operation = new HashMap() instead of Map<String, List<String>> operation = new HashMap<String, List<String>>() obtains the following result after the atomic update: doc: { id: "myId", fieldName: ["[Value1, Value2]" ], ... } - Also, the old value is never erased, and instead of a "set" operation an "add" operation happens. CONCLUSION: during an atomic update with CloudSolrServer the List/Array/Object value passed is being processed with just a toString() method. was: Atomic updates with a CloudServer object instance doesn´t work properly. - Code snippet: // CloudSolrSever instance. LBHttpSolrServer lbSolrServer = new LBHttpSolrServer(solrEndpoints); CloudSolrServer cloudSolrServer = new CloudSolrServer(zookeeperEndpoints, lbSolrServer); // SolrInputDocument to update: SolrInputDocument do = ne SolrInputDocument(); doc.addField("id", "myId"); Map<String, List<String>> operation = new HashMap<String, List<String>>(); operation.put("set", [[a list of String elements]]); // I want a set operation to override field values. doc.addField("fieldName", operation); // Atomic update operation. cloudSolrServer.add(doc); - Result: doc: { id: "myId", fieldName: [ "{set=values}" ], ... } - Changing map from snippet like Map operation = new HashMap() instead of Map<String, List<String>> operation = new HashMap<String, List<String>>() obtains the following result after the atomic update: doc: { id: "myId", fieldName: ["[Value1, Value2]" ], ... } - Also, the old value is never erased, and instead of a "set" operation an "add" operation happens. CONCLUSION: during an atomic update with CloudSolrServer the List/Array/Object value passed is being processed with just a toString() method. > SolrJ: CloudSolrServer atomic updates doesn´t work with Lists/Arrays > (Objects, in general). > ------------------------------------------------------------------------------------------- > > Key: SOLR-4080 > URL: https://issues.apache.org/jira/browse/SOLR-4080 > Project: Solr > Issue Type: Bug > Components: SolrCloud > Affects Versions: 4.0 > Environment: Solr 4.0 with SolrCloud deployed with two SolrServers > with shards=1. solr-solrj artifact version 4.0.0 is used to execute atomic > update operations. > Reporter: Luis Cappa Banda > > Atomic updates with a CloudSolrServer object instance doesn´t work properly. > - Code snippet: > // CloudSolrSever instance. > LBHttpSolrServer lbSolrServer = new LBHttpSolrServer(solrEndpoints); > CloudSolrServer cloudSolrServer = new CloudSolrServer(zookeeperEndpoints, > lbSolrServer); > // SolrInputDocument to update: > SolrInputDocument do = ne SolrInputDocument(); > doc.addField("id", "myId"); > Map<String, List<String>> operation = new HashMap<String, List<String>>(); > operation.put("set", [[a list of String elements]]); // I want a set > operation to override field values. > doc.addField("fieldName", operation); > // Atomic update operation. > cloudSolrServer.add(doc); > - Result: > doc: { > id: "myId", > fieldName: [ "{set=values}" > ], > ... > } > - Changing map from snippet like Map operation = new HashMap() instead of > Map<String, List<String>> operation = new HashMap<String, List<String>>() > obtains the following result after the atomic update: > doc: { > id: "myId", > fieldName: ["[Value1, Value2]" > ], > ... > } > - Also, the old value is never erased, and instead of a "set" operation an > "add" operation happens. > CONCLUSION: during an atomic update with CloudSolrServer the > List/Array/Object value passed is being processed with just a toString() > method. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org