This is an automated email from the ASF dual-hosted git repository.

shuber pushed a commit to branch UNOMI-225-ES7
in repository https://gitbox.apache.org/repos/asf/unomi.git

commit 3abb04b212a93679049bde9e88d0c1595ec0b19d
Author: Serge Huber <[email protected]>
AuthorDate: Wed Nov 20 08:29:56 2019 +0100

    UNOMI-225 ElasticSearch 7 support
    Model changes:
    - bug fixes to get queries to work properly
    - fixed index template setup
    
    Signed-off-by: Serge Huber <[email protected]>
---
 .../ElasticSearchPersistenceServiceImpl.java       | 56 ++++++++++++----------
 1 file changed, 31 insertions(+), 25 deletions(-)

diff --git 
a/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ElasticSearchPersistenceServiceImpl.java
 
b/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ElasticSearchPersistenceServiceImpl.java
index 31b527d..703ff4f 100644
--- 
a/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ElasticSearchPersistenceServiceImpl.java
+++ 
b/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ElasticSearchPersistenceServiceImpl.java
@@ -898,26 +898,30 @@ public class ElasticSearchPersistenceServiceImpl 
implements PersistenceService,
     public boolean createMonthlyIndexTemplate() {
         Boolean result = new InClassLoaderExecute<Boolean>(metricsService, 
this.getClass().getName() + ".createMonthlyIndexTemplate") {
             protected Boolean execute(Object... args) throws IOException {
-                PutIndexTemplateRequest putIndexTemplateRequest = new 
PutIndexTemplateRequest("context-event-monthly-indices")
-                        .patterns(Arrays.asList(indexPrefix + "-event-" + 
INDEX_DATE_PREFIX + "*"))
-                        .settings("{\n" +
-                                "    \"index\" : {\n" +
-                                "        \"number_of_shards\" : " + 
monthlyIndexNumberOfShards + ",\n" +
-                                "        \"number_of_replicas\" : " + 
monthlyIndexNumberOfReplicas + "\n" +
-                                "    },\n" +
-                                "    \"analysis\": {\n" +
-                                "      \"analyzer\": {\n" +
-                                "        \"folding\": {\n" +
-                                "          \"type\":\"custom\",\n" +
-                                "          \"tokenizer\": \"keyword\",\n" +
-                                "          \"filter\":  [ \"lowercase\", 
\"asciifolding\" ]\n" +
-                                "        }\n" +
-                                "      }\n" +
-                                "    }\n" +
-                                "}\n", XContentType.JSON);
-                putIndexTemplateRequest.mapping(mappings.get("event"), 
XContentType.JSON);
-                AcknowledgedResponse putIndexTemplateResponse = 
client.indices().putTemplate(putIndexTemplateRequest, RequestOptions.DEFAULT);
-                return putIndexTemplateResponse.isAcknowledged();
+                boolean executedSuccessfully = true;
+                for (String itemName : itemsMonthlyIndexed) {
+                    PutIndexTemplateRequest putIndexTemplateRequest = new 
PutIndexTemplateRequest("context-"+itemName+"-date-template")
+                            .patterns(Arrays.asList(indexPrefix + 
"-"+itemName.toLowerCase()+"-" + INDEX_DATE_PREFIX + "*"))
+                            .settings("{\n" +
+                                    "    \"index\" : {\n" +
+                                    "        \"number_of_shards\" : " + 
monthlyIndexNumberOfShards + ",\n" +
+                                    "        \"number_of_replicas\" : " + 
monthlyIndexNumberOfReplicas + "\n" +
+                                    "    },\n" +
+                                    "    \"analysis\": {\n" +
+                                    "      \"analyzer\": {\n" +
+                                    "        \"folding\": {\n" +
+                                    "          \"type\":\"custom\",\n" +
+                                    "          \"tokenizer\": \"keyword\",\n" +
+                                    "          \"filter\":  [ \"lowercase\", 
\"asciifolding\" ]\n" +
+                                    "        }\n" +
+                                    "      }\n" +
+                                    "    }\n" +
+                                    "}\n", XContentType.JSON);
+                    putIndexTemplateRequest.mapping(mappings.get(itemName), 
XContentType.JSON);
+                    AcknowledgedResponse putIndexTemplateResponse = 
client.indices().putTemplate(putIndexTemplateRequest, RequestOptions.DEFAULT);
+                    executedSuccessfully &= 
putIndexTemplateResponse.isAcknowledged();
+                }
+                return executedSuccessfully;
             }
         }.catchingExecuteInClassLoader(true);
         if (result == null) {
@@ -998,9 +1002,10 @@ public class ElasticSearchPersistenceServiceImpl 
implements PersistenceService,
         try {
             if (itemsMonthlyIndexed.contains(type)) {
                 createMonthlyIndexTemplate();
-                GetIndexRequest getIndexRequest = new 
GetIndexRequest(indexPrefix + "*" + INDEX_DATE_PREFIX + "*");
+                String indexName = getIndex(type, new Date());
+                GetIndexRequest getIndexRequest = new 
GetIndexRequest(indexName);
                 if (client.indices().exists(getIndexRequest, 
RequestOptions.DEFAULT)) {
-                    createMapping(type, source, indexPrefix + "*" + 
INDEX_DATE_PREFIX + "*");
+                    createMapping(type, source, indexName);
                 }
             } else if (indexNames.containsKey(type)) {
                 GetIndexRequest getIndexRequest = new 
GetIndexRequest(indexNames.get(type));
@@ -1022,7 +1027,7 @@ public class ElasticSearchPersistenceServiceImpl 
implements PersistenceService,
             protected Map<String, Map<String, Object>> execute(Object... args) 
throws Exception {
                 // Get all mapping for current itemType
                 GetMappingsRequest getMappingsRequest = new 
GetMappingsRequest();
-                getMappingsRequest.indices(getIndex(itemType, null));
+                getMappingsRequest.indices(getIndexNameForQuery(itemType));
                 GetMappingsResponse getMappingsResponse = 
client.indices().getMapping(getMappingsRequest, RequestOptions.DEFAULT);
                 Map<String, MappingMetaData> mappings = 
getMappingsResponse.mappings();
 
@@ -1344,6 +1349,7 @@ public class ElasticSearchPersistenceServiceImpl 
implements PersistenceService,
                         }
                     }
                     searchSourceBuilder.version(true);
+                    searchRequest.source(searchSourceBuilder);
                     SearchResponse response = client.search(searchRequest, 
RequestOptions.DEFAULT);
                     if (size == -1) {
                         // Scroll until no more hits are returned
@@ -1633,7 +1639,7 @@ public class ElasticSearchPersistenceServiceImpl 
implements PersistenceService,
             @Override
             protected Object execute(Object... args) throws Exception {
 
-                GetIndexRequest getIndexRequest = new GetIndexRequest("*");
+                GetIndexRequest getIndexRequest = new 
GetIndexRequest(indexPrefix + "*");
                 GetIndexResponse getIndexResponse = 
client.indices().get(getIndexRequest, RequestOptions.DEFAULT);
                 String[] indices = getIndexResponse.getIndices();
 
@@ -1775,7 +1781,7 @@ public class ElasticSearchPersistenceServiceImpl 
implements PersistenceService,
 
     private String getIndexNameForQuery(String itemType) {
         return indexNames.containsKey(itemType) ? indexNames.get(itemType) :
-                (itemsMonthlyIndexed.contains(itemType) ? indexPrefix + "*" + 
INDEX_DATE_PREFIX + "*" : getIndex(itemType, null));
+                (itemsMonthlyIndexed.contains(itemType) ? indexPrefix + "-" + 
itemType.toLowerCase() + "-" + INDEX_DATE_PREFIX + "*" : getIndex(itemType, 
null));
     }
 
     private String getConfig(Map<String, String> settings, String key,

Reply via email to