You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@camel.apache.org by Claus Ibsen <cl...@gmail.com> on 2015/12/08 14:37:16 UTC

Re: [1/2] camel git commit: CAMEL-9400: Camel-Elasticsearch: Add Multiget Operation support

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,  <ac...@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 <an...@gmail.com>
> Authored: Tue Dec 8 14:30:35 2015 +0100
> Committer: Andrea Cosentino <an...@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

R: Re: [1/2] camel git commit: CAMEL-9400: Camel-Elasticsearch: Add Multiget Operation support

Posted by Andrea Cosentino <an...@yahoo.com.INVALID>.
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<cl...@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,  <ac...@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 <an...@gmail.com>
> Authored: Tue Dec 8 14:30:35 2015 +0100
> Committer: Andrea Cosentino <an...@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