Yeah! You're right. I will do this evening. Thank you! Inviato da Yahoo Mail su Android Il mar, 8 dic, 2015 alle 14:37, Claus Ibsen<claus.ib...@gmail.com> ha scritto: Remember to update the documentation of this new operation https://github.com/apache/camel/blob/master/components/camel-elasticsearch/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchConfiguration.java#L36
On Tue, Dec 8, 2015 at 2:35 PM, <acosent...@apache.org> wrote: > Repository: camel > Updated Branches: > refs/heads/master 0afc35ea6 -> a9ba5b98a > > > CAMEL-9400: Camel-Elasticsearch: Add Multiget Operation support > > > Project: http://git-wip-us.apache.org/repos/asf/camel/repo > Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/1c81e302 > Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/1c81e302 > Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/1c81e302 > > Branch: refs/heads/master > Commit: 1c81e302c81a5f3abb1d20c21d231194a1744e72 > Parents: 0afc35e > Author: Andrea Cosentino <anco...@gmail.com> > Authored: Tue Dec 8 14:30:35 2015 +0100 > Committer: Andrea Cosentino <anco...@gmail.com> > Committed: Tue Dec 8 14:30:35 2015 +0100 > > ---------------------------------------------------------------------- > .../elasticsearch/ElasticsearchConstants.java | 1 + > .../elasticsearch/ElasticsearchProducer.java | 6 +++ > .../ElasticsearchActionRequestConverter.java | 15 +++++++ > .../ElasticsearchGetSearchDeleteUpdateTest.java | 47 ++++++++++++++++++++ > 4 files changed, 69 insertions(+) > ---------------------------------------------------------------------- > > > http://git-wip-us.apache.org/repos/asf/camel/blob/1c81e302/components/camel-elasticsearch/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchConstants.java > ---------------------------------------------------------------------- > diff --git > a/components/camel-elasticsearch/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchConstants.java > > b/components/camel-elasticsearch/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchConstants.java > index 7ccbf00..caae8c8 100644 > --- > a/components/camel-elasticsearch/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchConstants.java > +++ > b/components/camel-elasticsearch/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchConstants.java > @@ -27,6 +27,7 @@ public interface ElasticsearchConstants { > String OPERATION_BULK = "BULK"; > String OPERATION_BULK_INDEX = "BULK_INDEX"; > String OPERATION_GET_BY_ID = "GET_BY_ID"; > + String OPERATION_MULTIGET = "MULTIGET"; > String OPERATION_DELETE = "DELETE"; > String OPERATION_SEARCH = "SEARCH"; > String PARAM_INDEX_ID = "indexId"; > > http://git-wip-us.apache.org/repos/asf/camel/blob/1c81e302/components/camel-elasticsearch/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchProducer.java > ---------------------------------------------------------------------- > diff --git > a/components/camel-elasticsearch/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchProducer.java > > b/components/camel-elasticsearch/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchProducer.java > index 4eac708..9a54dde 100644 > --- > a/components/camel-elasticsearch/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchProducer.java > +++ > b/components/camel-elasticsearch/src/main/java/org/apache/camel/component/elasticsearch/ElasticsearchProducer.java > @@ -26,6 +26,7 @@ import org.elasticsearch.action.bulk.BulkItemResponse; > import org.elasticsearch.action.bulk.BulkRequest; > import org.elasticsearch.action.delete.DeleteRequest; > import org.elasticsearch.action.get.GetRequest; > +import org.elasticsearch.action.get.MultiGetRequest; > import org.elasticsearch.action.index.IndexRequest; > import org.elasticsearch.action.search.SearchRequest; > import org.elasticsearch.action.update.UpdateRequest; > @@ -60,6 +61,8 @@ public class ElasticsearchProducer extends DefaultProducer { > return ElasticsearchConstants.OPERATION_INDEX; > } else if (request instanceof GetRequest) { > return ElasticsearchConstants.OPERATION_GET_BY_ID; > + } else if (request instanceof MultiGetRequest) { > + return ElasticsearchConstants.OPERATION_MULTIGET; > } else if (request instanceof UpdateRequest) { > return ElasticsearchConstants.OPERATION_UPDATE; > } else if (request instanceof BulkRequest) { > @@ -132,6 +135,9 @@ public class ElasticsearchProducer extends > DefaultProducer { > } else if >(ElasticsearchConstants.OPERATION_GET_BY_ID.equals(operation)) { > GetRequest getRequest = message.getBody(GetRequest.class); > message.setBody(client.get(getRequest)); > + } else if > (ElasticsearchConstants.OPERATION_MULTIGET.equals(operation)) { > + MultiGetRequest multiGetRequest = > message.getBody(MultiGetRequest.class); > + message.setBody(client.multiGet(multiGetRequest)); > } else if (ElasticsearchConstants.OPERATION_BULK.equals(operation)) { > BulkRequest bulkRequest = message.getBody(BulkRequest.class); > message.setBody(client.bulk(bulkRequest).actionGet()); > > http://git-wip-us.apache.org/repos/asf/camel/blob/1c81e302/components/camel-elasticsearch/src/main/java/org/apache/camel/component/elasticsearch/converter/ElasticsearchActionRequestConverter.java > ---------------------------------------------------------------------- > diff --git > a/components/camel-elasticsearch/src/main/java/org/apache/camel/component/elasticsearch/converter/ElasticsearchActionRequestConverter.java > > b/components/camel-elasticsearch/src/main/java/org/apache/camel/component/elasticsearch/converter/ElasticsearchActionRequestConverter.java > index fcb1866..92a4ddf 100644 > --- > a/components/camel-elasticsearch/src/main/java/org/apache/camel/component/elasticsearch/converter/ElasticsearchActionRequestConverter.java > +++ > b/components/camel-elasticsearch/src/main/java/org/apache/camel/component/elasticsearch/converter/ElasticsearchActionRequestConverter.java > @@ -16,6 +16,7 @@ > */ > package org.apache.camel.component.elasticsearch.converter; > > +import java.util.Iterator; > import java.util.List; > import java.util.Map; > > @@ -26,6 +27,8 @@ import org.elasticsearch.action.WriteConsistencyLevel; > import org.elasticsearch.action.bulk.BulkRequest; > import org.elasticsearch.action.delete.DeleteRequest; > import org.elasticsearch.action.get.GetRequest; > +import org.elasticsearch.action.get.MultiGetRequest; > +import org.elasticsearch.action.get.MultiGetRequest.Item; > import org.elasticsearch.action.index.IndexRequest; > import org.elasticsearch.action.search.SearchRequest; > import org.elasticsearch.action.update.UpdateRequest; > @@ -113,6 +116,18 @@ public final class ElasticsearchActionRequestConverter { > ElasticsearchConstants.PARAM_INDEX_TYPE, > String.class)).id(id); > } > + > + @Converter > + public static MultiGetRequest toMultiGetRequest(Object document, > Exchange exchange) { > + List<Item> items = (List<Item>) document; > + MultiGetRequest multiGetRequest = new MultiGetRequest(); > + Iterator<Item> it = items.iterator(); > + while (it.hasNext()) { > + MultiGetRequest.Item item = (MultiGetRequest.Item) > it.next(); > + multiGetRequest.add(item); > + } > + return multiGetRequest; > + } > > @Converter > public static DeleteRequest toDeleteRequest(String id, Exchange >exchange) { > > http://git-wip-us.apache.org/repos/asf/camel/blob/1c81e302/components/camel-elasticsearch/src/test/java/org/apache/camel/component/elasticsearch/ElasticsearchGetSearchDeleteUpdateTest.java > ---------------------------------------------------------------------- > diff --git > a/components/camel-elasticsearch/src/test/java/org/apache/camel/component/elasticsearch/ElasticsearchGetSearchDeleteUpdateTest.java > > b/components/camel-elasticsearch/src/test/java/org/apache/camel/component/elasticsearch/ElasticsearchGetSearchDeleteUpdateTest.java > index d02ce86..75ddc56 100644 > --- > a/components/camel-elasticsearch/src/test/java/org/apache/camel/component/elasticsearch/ElasticsearchGetSearchDeleteUpdateTest.java > +++ > b/components/camel-elasticsearch/src/test/java/org/apache/camel/component/elasticsearch/ElasticsearchGetSearchDeleteUpdateTest.java > @@ -16,7 +16,9 @@ > */ > package org.apache.camel.component.elasticsearch; > > +import java.util.ArrayList; > import java.util.HashMap; > +import java.util.List; > import java.util.Map; > > import org.apache.camel.builder.RouteBuilder; > @@ -24,6 +26,9 @@ import org.elasticsearch.action.delete.DeleteRequest; > import org.elasticsearch.action.delete.DeleteResponse; > import org.elasticsearch.action.get.GetRequest; > import org.elasticsearch.action.get.GetResponse; > +import org.elasticsearch.action.get.MultiGetItemResponse; > +import org.elasticsearch.action.get.MultiGetRequest.Item; > +import org.elasticsearch.action.get.MultiGetResponse; > import org.elasticsearch.action.index.IndexRequest; > import org.elasticsearch.action.search.SearchResponse; > import org.junit.Test; > @@ -119,6 +124,47 @@ public class ElasticsearchGetSearchDeleteUpdateTest > extends ElasticsearchBaseTes > assertNotNull("response should not be null", response); > assertNotNull("response source should not be null", >response.getSource()); > } > + > + @Test > + public void testMultiGet() throws Exception { > + //first, INDEX two values > + Map<String, String> map = createIndexedData(); > + Map<String, Object> headers = new HashMap<String, Object>(); > + headers.put(ElasticsearchConstants.PARAM_OPERATION, > ElasticsearchConstants.OPERATION_INDEX); > + headers.put(ElasticsearchConstants.PARAM_INDEX_NAME, "twitter"); > + headers.put(ElasticsearchConstants.PARAM_INDEX_TYPE, "tweet"); > + headers.put(ElasticsearchConstants.PARAM_INDEX_ID, "1"); > + > + template.requestBodyAndHeaders("direct:start", map, headers, > String.class); > + > + headers.clear(); > + headers.put(ElasticsearchConstants.PARAM_OPERATION, > ElasticsearchConstants.OPERATION_INDEX); > + headers.put(ElasticsearchConstants.PARAM_INDEX_NAME, "facebook"); > + headers.put(ElasticsearchConstants.PARAM_INDEX_TYPE, "status"); > + headers.put(ElasticsearchConstants.PARAM_INDEX_ID, "2"); > + > + template.requestBodyAndHeaders("direct:start", map, headers, > String.class); > + headers.clear(); > + > + //now, verify MULTIGET > + headers.put(ElasticsearchConstants.PARAM_OPERATION, > ElasticsearchConstants.OPERATION_MULTIGET); > + Item item1 = new Item("twitter", "tweet", "1"); > + Item item2 = new Item("facebook", "status", "2"); > + Item item3 = new Item("instagram", "latest", "3"); > + List<Item> list = new ArrayList<Item>(); > + list.add(item1); > + list.add(item2); > + list.add(item3); > + MultiGetResponse response = > template.requestBodyAndHeaders("direct:start", list, headers, > MultiGetResponse.class); > + MultiGetItemResponse[] responses = response.getResponses(); > + assertNotNull("response should not be null", response); > + assertEquals("response should contains three multiGetResponse > object", 3, response.getResponses().length); > + assertEquals("response 1 should contains tweet as type", "tweet", > responses[0].getResponse().getType().toString()); > + assertEquals("response 2 should contains status as type", "status", > responses[1].getResponse().getType().toString()); > + assertFalse("response 1 should be ok", responses[0].isFailed()); > + assertFalse("response 2 should be ok", responses[1].isFailed()); > + assertTrue("response 3 should be failed", responses[2].isFailed()); > + } > > @Test > public void testDeleteWithHeaders() throws Exception { > @@ -215,6 +261,7 @@ public class ElasticsearchGetSearchDeleteUpdateTest > extends ElasticsearchBaseTes > from("direct:start").to("elasticsearch://local"); > >from("direct:index").to("elasticsearch://local?operation=INDEX&indexName=twitter&indexType=tweet"); > >from("direct:get").to("elasticsearch://local?operation=GET_BY_ID&indexName=twitter&indexType=tweet"); > + > from("direct:multiget").to("elasticsearch://local?operation=MULTIGET&indexName=twitter&indexType=tweet"); > >from("direct:delete").to("elasticsearch://local?operation=DELETE&indexName=twitter&indexType=tweet"); > >from("direct:search").to("elasticsearch://local?operation=SEARCH&indexName=twitter&indexType=tweet"); > >from("direct:update").to("elasticsearch://local?operation=UPDATE&indexName=twitter&indexType=tweet"); > -- Claus Ibsen ----------------- http://davsclaus.com @davsclaus Camel in Action 2: https://www.manning.com/ibsen2