This is an automated email from the ASF dual-hosted git repository.
ningjiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/master by this push:
new 30203d6 CAMEL-13348 support to do the elasticsearch without
specifying the indexName and indexType
30203d6 is described below
commit 30203d69cc67f92313845bd26a063247bb4d7ea4
Author: Willem Jiang <[email protected]>
AuthorDate: Wed Mar 20 19:47:39 2019 +0800
CAMEL-13348 support to do the elasticsearch without specifying the
indexName and indexType
---
.../converter/ElasticsearchActionRequestConverter.java | 18 ++++++++++++++----
.../ElasticsearchGetSearchDeleteExistsUpdateTest.java | 18 +++++++++++++-----
2 files changed, 27 insertions(+), 9 deletions(-)
diff --git
a/components/camel-elasticsearch-rest/src/main/java/org/apache/camel/component/elasticsearch/converter/ElasticsearchActionRequestConverter.java
b/components/camel-elasticsearch-rest/src/main/java/org/apache/camel/component/elasticsearch/converter/ElasticsearchActionRequestConverter.java
index fbb3c43..0262821 100644
---
a/components/camel-elasticsearch-rest/src/main/java/org/apache/camel/component/elasticsearch/converter/ElasticsearchActionRequestConverter.java
+++
b/components/camel-elasticsearch-rest/src/main/java/org/apache/camel/component/elasticsearch/converter/ElasticsearchActionRequestConverter.java
@@ -24,6 +24,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.camel.Converter;
import org.apache.camel.Exchange;
import org.apache.camel.component.elasticsearch.ElasticsearchConstants;
+import org.apache.camel.util.ObjectHelper;
import org.elasticsearch.action.bulk.BulkRequest;
import org.elasticsearch.action.delete.DeleteRequest;
import org.elasticsearch.action.get.GetRequest;
@@ -157,9 +158,17 @@ public final class ElasticsearchActionRequestConverter {
if (queryObject instanceof SearchRequest) {
return (SearchRequest) queryObject;
}
- SearchRequest searchRequest = new SearchRequest(exchange.getIn()
- .getHeader(ElasticsearchConstants.PARAM_INDEX_NAME, String.class))
-
.types(exchange.getIn().getHeader(ElasticsearchConstants.PARAM_INDEX_TYPE,
String.class));
+ SearchRequest searchRequest = new SearchRequest();
+
+ // Only setup the indexName and indexType if the message header has
the setting
+ String indexName =
exchange.getIn().getHeader(ElasticsearchConstants.PARAM_INDEX_NAME,
String.class);
+ String indexType =
exchange.getIn().getHeader(ElasticsearchConstants.PARAM_INDEX_TYPE,
String.class);
+ if (ObjectHelper.isNotEmpty(indexName)) {
+ searchRequest.indices(indexName);
+ }
+ if (ObjectHelper.isNotEmpty(indexType)) {
+ searchRequest.types(indexType);
+ }
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
String queryText = null;
@@ -174,7 +183,7 @@ public final class ElasticsearchActionRequestConverter {
XContentBuilder contentBuilder =
XContentFactory.contentBuilder(XContentType.JSON);
queryText = Strings.toString(contentBuilder.map(mapQuery));
} catch (IOException e) {
- LOG.error(e.getMessage());
+ LOG.error("Cannot build the QueryText from the map.", e);
}
} else if (queryObject instanceof String) {
queryText = (String) queryObject;
@@ -186,6 +195,7 @@ public final class ElasticsearchActionRequestConverter {
}
} else {
// Cannot convert the queryObject into SearchRequest
+ LOG.info("Cannot convert queryObject into SearchRequest object");
return null;
}
diff --git
a/components/camel-elasticsearch-rest/src/test/java/org/apache/camel/component/elasticsearch/ElasticsearchGetSearchDeleteExistsUpdateTest.java
b/components/camel-elasticsearch-rest/src/test/java/org/apache/camel/component/elasticsearch/ElasticsearchGetSearchDeleteExistsUpdateTest.java
index 8b31644..15b0ce5 100644
---
a/components/camel-elasticsearch-rest/src/test/java/org/apache/camel/component/elasticsearch/ElasticsearchGetSearchDeleteExistsUpdateTest.java
+++
b/components/camel-elasticsearch-rest/src/test/java/org/apache/camel/component/elasticsearch/ElasticsearchGetSearchDeleteExistsUpdateTest.java
@@ -92,7 +92,7 @@ public class ElasticsearchGetSearchDeleteExistsUpdateTest
extends ElasticsearchB
match.put("match", actualQuery);
Map<String, Object> query = new HashMap<>();
query.put("query", match);
- SearchHits response = template.requestBody("direct:search", match,
SearchHits.class);
+ SearchHits response = template.requestBody("direct:search", query,
SearchHits.class);
assertNotNull("response should not be null", response);
assertEquals("response hits should be == 0", 0, response.totalHits);
}
@@ -108,10 +108,17 @@ public class ElasticsearchGetSearchDeleteExistsUpdateTest
extends ElasticsearchB
GetResponse getResponse = template.requestBody("direct:get", indexId,
GetResponse.class);
assertNotNull("response should not be null", getResponse);
assertNotNull("response source should not be null",
getResponse.getSource());
- SearchRequest req = new SearchRequest();
- req.indices("twitter");
- req.types("tweet");
- SearchHits response = template.requestBody("direct:search", req,
SearchHits.class);
+ // need to create a query string
+ String query = "{\n" +
+ " \"query\" : { \"match\" : { \"key\" : \"value\" }}\n" +
+ "}\n";
+ SearchHits response = template.requestBody("direct:search", query,
SearchHits.class);
+ assertNotNull("response should not be null", response);
+ assertEquals("response hits should be == 0", 0, response.totalHits);
+
+ // testing
+
+ response = template.requestBody("direct:search-1", query,
SearchHits.class);
assertNotNull("response should not be null", response);
assertEquals("response hits should be == 0", 0, response.totalHits);
}
@@ -325,6 +332,7 @@ public class ElasticsearchGetSearchDeleteExistsUpdateTest
extends ElasticsearchB
from("direct:multiget").to("elasticsearch-rest://elasticsearch?operation=MultiGet&indexName=twitter&indexType=tweet&hostAddresses=localhost:"
+ ES_BASE_HTTP_PORT);
from("direct:delete").to("elasticsearch-rest://elasticsearch?operation=Delete&indexName=twitter&indexType=tweet&hostAddresses=localhost:"
+ ES_BASE_HTTP_PORT);
from("direct:search").to("elasticsearch-rest://elasticsearch?operation=Search&indexName=twitter&indexType=tweet&hostAddresses=localhost:"
+ ES_BASE_HTTP_PORT);
+
from("direct:search-1").to("elasticsearch-rest://elasticsearch?operation=Search&hostAddresses=localhost:"
+ ES_BASE_HTTP_PORT);
from("direct:multiSearch").to("elasticsearch-rest://elasticsearch?operation=MultiSearch&hostAddresses=localhost:"
+ ES_BASE_HTTP_PORT);
from("direct:update").to("elasticsearch-rest://elasticsearch?operation=Update&indexName=twitter&indexType=tweet&hostAddresses=localhost:"
+ ES_BASE_HTTP_PORT);
from("direct:exists").to("elasticsearch-rest://elasticsearch?operation=Exists&hostAddresses=localhost:"
+ ES_BASE_HTTP_PORT);