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
The following commit(s) were added to refs/heads/UNOMI-225-ES7 by this push:
new 8ab0764 UNOMI-225 ElasticSearch 7 support Model changes: - change
geonames to use context prefix (will require re-import) - added mapping types
for all types - Unomi should now start, but there are still known issues
(integration tests do not run, actions are not properly register on first
start). - index.name was changed to index.prefix
8ab0764 is described below
commit 8ab07643390d77731a3a6a8d21d8438e95389aff
Author: Serge Huber <[email protected]>
AuthorDate: Tue Nov 19 17:31:27 2019 +0100
UNOMI-225 ElasticSearch 7 support
Model changes:
- change geonames to use context prefix (will require re-import)
- added mapping types for all types
- Unomi should now start, but there are still known issues (integration
tests do not run, actions are not properly register on first start).
- index.name was changed to index.prefix
Signed-off-by: Serge Huber <[email protected]>
---
.../unomi/geonames/services/GeonameEntry.java | 1 -
.../geonames/services/GeonamesServiceImpl.java | 6 +-
.../META-INF/cxs/mappings/geonameEntry.json | 47 +++++++-----
.../resources/META-INF/cxs/mappings/userList.json | 46 ++++++++----
.../main/resources/etc/custom.system.properties | 2 +-
.../ElasticSearchPersistenceServiceImpl.java | 85 ++++++++++------------
.../cxs/mappings/{event.json => actiontype.json} | 10 +--
.../resources/META-INF/cxs/mappings/campaign.json | 48 ++++++------
.../META-INF/cxs/mappings/campaignevent.json | 40 +++++-----
.../mappings/{event.json => conditiontype.json} | 10 +--
.../resources/META-INF/cxs/mappings/event.json | 8 +-
.../cxs/mappings/{event.json => exportconfig.json} | 10 +--
.../main/resources/META-INF/cxs/mappings/goal.json | 29 ++++----
.../cxs/mappings/{event.json => importconfig.json} | 10 +--
.../cxs/mappings/{profile.json => persona.json} | 27 ++++---
.../META-INF/cxs/mappings/personaSession.json | 35 +++++----
.../resources/META-INF/cxs/mappings/profile.json | 27 ++++---
.../META-INF/cxs/mappings/propertyType.json | 72 +++++++++---------
.../main/resources/META-INF/cxs/mappings/rule.json | 46 ++++++------
.../cxs/mappings/{event.json => rulestats.json} | 10 +--
.../resources/META-INF/cxs/mappings/scoring.json | 31 ++++----
.../resources/META-INF/cxs/mappings/segment.json | 32 ++++----
.../resources/META-INF/cxs/mappings/session.json | 35 ++++-----
.../resources/OSGI-INF/blueprint/blueprint.xml | 9 +--
.../org.apache.unomi.persistence.elasticsearch.cfg | 2 +-
25 files changed, 327 insertions(+), 351 deletions(-)
diff --git
a/extensions/geonames/services/src/main/java/org/apache/unomi/geonames/services/GeonameEntry.java
b/extensions/geonames/services/src/main/java/org/apache/unomi/geonames/services/GeonameEntry.java
index 36f4f0b..a2611bb 100644
---
a/extensions/geonames/services/src/main/java/org/apache/unomi/geonames/services/GeonameEntry.java
+++
b/extensions/geonames/services/src/main/java/org/apache/unomi/geonames/services/GeonameEntry.java
@@ -26,7 +26,6 @@ import java.util.Map;
public class GeonameEntry extends Item {
public static final String ITEM_TYPE = "geonameEntry";
- public static final String INDEX_NAME = "geonames";
private static final long serialVersionUID = 1L;
protected String name;
protected String asciiname;
diff --git
a/extensions/geonames/services/src/main/java/org/apache/unomi/geonames/services/GeonamesServiceImpl.java
b/extensions/geonames/services/src/main/java/org/apache/unomi/geonames/services/GeonamesServiceImpl.java
index 22ac964..430677e 100644
---
a/extensions/geonames/services/src/main/java/org/apache/unomi/geonames/services/GeonamesServiceImpl.java
+++
b/extensions/geonames/services/src/main/java/org/apache/unomi/geonames/services/GeonamesServiceImpl.java
@@ -80,10 +80,10 @@ public class GeonamesServiceImpl implements GeonamesService
{
}
public void importDatabase() {
- if (!persistenceService.createIndex("geonames")) {
+ if (!persistenceService.createIndex(GeonameEntry.ITEM_TYPE)) {
if (forceDbImport) {
- persistenceService.removeIndex("geonames");
- persistenceService.createIndex("geonames");
+ persistenceService.removeIndex(GeonameEntry.ITEM_TYPE);
+ persistenceService.createIndex(GeonameEntry.ITEM_TYPE);
logger.info("Geonames index removed and recreated");
} else if
(persistenceService.getAllItemsCount(GeonameEntry.ITEM_TYPE) > 0) {
return;
diff --git
a/extensions/geonames/services/src/main/resources/META-INF/cxs/mappings/geonameEntry.json
b/extensions/geonames/services/src/main/resources/META-INF/cxs/mappings/geonameEntry.json
index 64038ab..6950737 100644
---
a/extensions/geonames/services/src/main/resources/META-INF/cxs/mappings/geonameEntry.json
+++
b/extensions/geonames/services/src/main/resources/META-INF/cxs/mappings/geonameEntry.json
@@ -1,22 +1,35 @@
{
- "geonameEntry": {
- "properties": {
- "elevation": {
- "type": "long"
- },
-
- "location": {
- "type": "geo_point"
- },
- "modificationDate": {
- "type": "date",
- "format": "strict_date_optional_time||epoch_millis"
- },
-
- "population": {
- "type": "long"
+ "dynamic_templates": [
+ {
+ "all": {
+ "match": "*",
+ "match_mapping_type": "string",
+ "mapping": {
+ "type": "text",
+ "analyzer": "folding",
+ "fields": {
+ "keyword": {
+ "type": "keyword",
+ "ignore_above": 256
+ }
+ }
+ }
}
-
+ }
+ ],
+ "properties": {
+ "elevation": {
+ "type": "long"
+ },
+ "location": {
+ "type": "geo_point"
+ },
+ "modificationDate": {
+ "type": "date",
+ "format": "strict_date_optional_time||epoch_millis"
+ },
+ "population": {
+ "type": "long"
}
}
}
\ No newline at end of file
diff --git
a/extensions/lists-extension/services/src/main/resources/META-INF/cxs/mappings/userList.json
b/extensions/lists-extension/services/src/main/resources/META-INF/cxs/mappings/userList.json
index d73e8b3..3d3322b 100644
---
a/extensions/lists-extension/services/src/main/resources/META-INF/cxs/mappings/userList.json
+++
b/extensions/lists-extension/services/src/main/resources/META-INF/cxs/mappings/userList.json
@@ -1,22 +1,38 @@
{
- "userList": {
- "properties": {
- "metadata": {
- "properties": {
- "enabled": {
- "type": "boolean"
- },
- "hidden": {
- "type": "boolean"
- },
- "missingPlugins": {
- "type": "boolean"
- },
- "readOnly": {
- "type": "boolean"
+ "dynamic_templates": [
+ {
+ "all": {
+ "match": "*",
+ "match_mapping_type": "string",
+ "mapping": {
+ "type": "text",
+ "analyzer": "folding",
+ "fields": {
+ "keyword": {
+ "type": "keyword",
+ "ignore_above": 256
+ }
}
}
}
}
+ ],
+ "properties": {
+ "metadata": {
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ },
+ "hidden": {
+ "type": "boolean"
+ },
+ "missingPlugins": {
+ "type": "boolean"
+ },
+ "readOnly": {
+ "type": "boolean"
+ }
+ }
+ }
}
}
\ No newline at end of file
diff --git a/package/src/main/resources/etc/custom.system.properties
b/package/src/main/resources/etc/custom.system.properties
index dc14052..f964cb9 100644
--- a/package/src/main/resources/etc/custom.system.properties
+++ b/package/src/main/resources/etc/custom.system.properties
@@ -66,7 +66,7 @@
org.apache.unomi.elasticsearch.cluster.name=${env:UNOMI_ELASTICSEARCH_CLUSTERNAM
# hostA:9200,hostB:9200
# Note: the port number must be repeated for each host.
org.apache.unomi.elasticsearch.addresses=${env:UNOMI_ELASTICSEARCH_ADDRESSES:-localhost:9200}
-org.apache.unomi.elasticsearch.index.name=${env:UNOMI_ELASTICSEARCH_INDEXNAME:-context}
+org.apache.unomi.elasticsearch.index.prefix=${env:UNOMI_ELASTICSEARCH_INDEXPREFIX:-context}
org.apache.unomi.elasticsearch.monthlyIndex.nbShards=${env:UNOMI_ELASTICSEARCH_MONTHLYINDEX_SHARDS:-5}
org.apache.unomi.elasticsearch.monthlyIndex.nbReplicas=${env:UNOMI_ELASTICSEARCH_MONTHLYINDEX_REPLICAS:-0}
org.apache.unomi.elasticsearch.defaultIndex.nbShards=${env:UNOMI_ELASTICSEARCH_DEFAULTINDEX_SHARDS:-5}
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 f1949ed..31b527d 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
@@ -122,7 +122,7 @@ public class ElasticSearchPersistenceServiceImpl implements
PersistenceService,
private String elasticSearchAddresses;
private List<String> elasticSearchAddressList = new ArrayList<>();
private String clusterName;
- private String indexName;
+ private String indexPrefix;
private String monthlyIndexNumberOfShards;
private String monthlyIndexNumberOfReplicas;
private String numberOfShards;
@@ -132,7 +132,7 @@ public class ElasticSearchPersistenceServiceImpl implements
PersistenceService,
private ConditionEvaluatorDispatcher conditionEvaluatorDispatcher;
private ConditionESQueryBuilderDispatcher
conditionESQueryBuilderDispatcher;
- private Map<String, String> indexNames;
+ private Map<String, String> indexNames = new HashMap<>();
private List<String> itemsMonthlyIndexed;
private Map<String, String> routingByType;
@@ -174,8 +174,8 @@ public class ElasticSearchPersistenceServiceImpl implements
PersistenceService,
}
}
- public void setIndexName(String indexName) {
- this.indexName = indexName;
+ public void setIndexPrefix(String indexPrefix) {
+ this.indexPrefix = indexPrefix;
}
public void setMonthlyIndexNumberOfShards(String
monthlyIndexNumberOfShards) {
@@ -288,9 +288,9 @@ public class ElasticSearchPersistenceServiceImpl implements
PersistenceService,
bulkProcessorBackoffPolicy =
System.getProperty(BULK_PROCESSOR_BACKOFF_POLICY, bulkProcessorBackoffPolicy);
// this property is used for integration tests, to make sure
we don't conflict with an already running ElasticSearch instance.
- if
(System.getProperty("org.apache.unomi.itests.elasticsearch.transport.port") !=
null) {
+ if
(System.getProperty("org.apache.unomi.itests.elasticsearch.http.port") != null)
{
elasticSearchAddressList.clear();
- elasticSearchAddressList.add("localhost:" +
System.getProperty("org.apache.unomi.itests.elasticsearch.transport.port"));
+ elasticSearchAddressList.add("localhost:" +
System.getProperty("org.apache.unomi.itests.elasticsearch.http.port"));
logger.info("Overriding ElasticSearch address list from
system property=" + elasticSearchAddressList);
}
// this property is used for integration tests, to make sure
we don't conflict with an already running ElasticSearch instance.
@@ -310,7 +310,7 @@ public class ElasticSearchPersistenceServiceImpl implements
PersistenceService,
nodeList.add(new Node(new HttpHost(elasticSearchHostName,
elasticSearchPort, "http")));
}
- logger.info("Connecting to ElasticSearch persistence backend
using cluster name " + clusterName + " and index name " + indexName + "...");
+ logger.info("Connecting to ElasticSearch persistence backend
using cluster name " + clusterName + " and index name " + indexPrefix + "...");
client = new RestHighLevelClient(
RestClient.builder(nodeList.toArray(new
Node[nodeList.size()])));
@@ -334,28 +334,6 @@ public class ElasticSearchPersistenceServiceImpl
implements PersistenceService,
}
}
- // @todo is there a better way to detect index existence than
to wait for it to startup ?
- boolean indexExists = false;
- int tries = 0;
-
- while (!indexExists && tries < 20) {
-
- indexExists = client.indices().exists(new
GetIndexRequest(indexName), RequestOptions.DEFAULT);
- tries++;
- try {
- Thread.sleep(100);
- } catch (InterruptedException e) {
- logger.error("Interrupted", e);
- }
- }
- if (!indexExists) {
- logger.info("{} index doesn't exist yet, creating it...",
getIndex("profile", null));
- internalCreateIndex(getIndex("profile", null),
mappings.get("profile"));
- } else {
- logger.info("Found index {}, ElasticSearch started
successfully.", getIndex("profile", null));
- createMapping(getIndex("profile", null),
mappings.get("profile"));
- }
-
createMonthlyIndexTemplate();
if (client != null && bulkProcessor == null) {
@@ -534,9 +512,23 @@ public class ElasticSearchPersistenceServiceImpl
implements PersistenceService,
}
String mappingSource = content.toString();
mappings.put(name, mappingSource);
- if (createMapping) {
- createMapping(name, mappingSource);
+ boolean indexExists = false;
+
+ String itemIndexName = getIndex(name, new Date());
+ indexExists = client.indices().exists(new
GetIndexRequest(itemIndexName), RequestOptions.DEFAULT);
+ if (!indexExists) {
+ logger.info("{} index doesn't exist yet, creating it...",
itemIndexName);
+ internalCreateIndex(itemIndexName, mappingSource);
+ } else {
+ logger.info("Found index {}", itemIndexName);
+ if (createMapping) {
+ logger.info("Updating mapping for {}", itemIndexName);
+ createMapping(name, mappingSource);
+ }
}
+ logger.info("Waiting for GREEN cluster status...");
+ client.cluster().health(new
ClusterHealthRequest().waitForGreenStatus(), RequestOptions.DEFAULT);
+ logger.info("Cluster status is GREEN");
} catch (Exception e) {
logger.error("Error while loading mapping definition " +
predefinedMappingURL, e);
}
@@ -633,9 +625,10 @@ public class ElasticSearchPersistenceServiceImpl
implements PersistenceService,
String itemType = item.getItemType();
String itemId = item.getItemId();
putInCache(itemId, item);
- String index = getIndex(itemType, ((TimestampedItem)
item).getTimeStamp() );
+ String index = getIndex(itemType,
itemsMonthlyIndexed.contains(itemType) ? ((TimestampedItem)
item).getTimeStamp() : null);
IndexRequest indexRequest = new IndexRequest(index);
indexRequest.id(itemId);
+ indexRequest.source(source, XContentType.JSON);
if (routingByType.containsKey(itemType)) {
indexRequest.routing(routingByType.get(itemType));
}
@@ -817,7 +810,7 @@ public class ElasticSearchPersistenceServiceImpl implements
PersistenceService,
BulkRequest deleteByScopeBulkRequest = new BulkRequest();
final TimeValue keepAlive = TimeValue.timeValueHours(1);
- SearchRequest searchRequest = new SearchRequest(indexName
+ "*")
+ SearchRequest searchRequest = new
SearchRequest(indexPrefix + "*")
.indices(getIndexNameForQuery(itemType))
.scroll(keepAlive);
SearchSourceBuilder searchSourceBuilder = new
SearchSourceBuilder()
@@ -906,7 +899,7 @@ public class ElasticSearchPersistenceServiceImpl implements
PersistenceService,
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(indexName + "-event-" +
INDEX_DATE_PREFIX + "*"))
+ .patterns(Arrays.asList(indexPrefix + "-event-" +
INDEX_DATE_PREFIX + "*"))
.settings("{\n" +
" \"index\" : {\n" +
" \"number_of_shards\" : " +
monthlyIndexNumberOfShards + ",\n" +
@@ -937,10 +930,10 @@ public class ElasticSearchPersistenceServiceImpl
implements PersistenceService,
public boolean createIndex(final String indexName) {
Boolean result = new InClassLoaderExecute<Boolean>(metricsService,
this.getClass().getName() + ".createIndex") {
protected Boolean execute(Object... args) throws IOException {
- GetIndexRequest getIndexRequest = new
GetIndexRequest(indexName);
+ GetIndexRequest getIndexRequest = new
GetIndexRequest((indexPrefix + "-" + indexName).toLowerCase());
boolean indexExists = client.indices().exists(getIndexRequest,
RequestOptions.DEFAULT);
if (!indexExists) {
- internalCreateIndex(indexName, mappings.get(indexName));
+ internalCreateIndex((indexPrefix + "-" +
indexName).toLowerCase(), mappings.get(indexName));
}
return !indexExists;
}
@@ -955,10 +948,10 @@ public class ElasticSearchPersistenceServiceImpl
implements PersistenceService,
public boolean removeIndex(final String indexName) {
Boolean result = new InClassLoaderExecute<Boolean>(metricsService,
this.getClass().getName() + ".removeIndex") {
protected Boolean execute(Object... args) throws IOException {
- GetIndexRequest getIndexRequest = new
GetIndexRequest(indexName);
+ GetIndexRequest getIndexRequest = new
GetIndexRequest(indexPrefix + "-" + indexName);
boolean indexExists = client.indices().exists(getIndexRequest,
RequestOptions.DEFAULT);
if (indexExists) {
- DeleteIndexRequest deleteIndexRequest = new
DeleteIndexRequest(indexName);
+ DeleteIndexRequest deleteIndexRequest = new
DeleteIndexRequest(indexPrefix + "-" + indexName);
client.indices().delete(deleteIndexRequest,
RequestOptions.DEFAULT);
}
return indexExists;
@@ -1005,9 +998,9 @@ public class ElasticSearchPersistenceServiceImpl
implements PersistenceService,
try {
if (itemsMonthlyIndexed.contains(type)) {
createMonthlyIndexTemplate();
- GetIndexRequest getIndexRequest = new
GetIndexRequest(indexName + "*" + INDEX_DATE_PREFIX + "*");
+ GetIndexRequest getIndexRequest = new
GetIndexRequest(indexPrefix + "*" + INDEX_DATE_PREFIX + "*");
if (client.indices().exists(getIndexRequest,
RequestOptions.DEFAULT)) {
- createMapping(type, source, indexName + "*" +
INDEX_DATE_PREFIX + "*");
+ createMapping(type, source, indexPrefix + "*" +
INDEX_DATE_PREFIX + "*");
}
} else if (indexNames.containsKey(type)) {
GetIndexRequest getIndexRequest = new
GetIndexRequest(indexNames.get(type));
@@ -1015,7 +1008,7 @@ public class ElasticSearchPersistenceServiceImpl
implements PersistenceService,
createMapping(type, source, indexNames.get(type));
}
} else {
- createMapping(type, source, indexName);
+ createMapping(type, source, getIndex(type, new Date()));
}
} catch (IOException ioe) {
logger.error("Error while creating mapping for type " + type + "
and source " + source, ioe);
@@ -1306,7 +1299,7 @@ public class ElasticSearchPersistenceServiceImpl
implements PersistenceService,
SearchSourceBuilder searchSourceBuilder = new
SearchSourceBuilder()
.fetchSource(true)
.query(query)
- .size(size)
+ .size(size < 0 ? defaultQueryLimit : size)
.from(offset);
if (scrollTimeValidity != null) {
keepAlive =
TimeValue.parseTimeValue(scrollTimeValidity, TimeValue.timeValueHours(1),
"scrollTimeValidity");
@@ -1680,7 +1673,7 @@ public class ElasticSearchPersistenceServiceImpl
implements PersistenceService,
BulkRequest deleteByScopeBulkRequest = new BulkRequest();
final TimeValue keepAlive = TimeValue.timeValueHours(1);
- SearchRequest searchRequest = new SearchRequest(indexName +
"*").scroll(keepAlive);
+ SearchRequest searchRequest = new SearchRequest(indexPrefix +
"*").scroll(keepAlive);
SearchSourceBuilder searchSourceBuilder = new
SearchSourceBuilder()
.query(query)
.size(100);
@@ -1782,7 +1775,7 @@ public class ElasticSearchPersistenceServiceImpl
implements PersistenceService,
private String getIndexNameForQuery(String itemType) {
return indexNames.containsKey(itemType) ? indexNames.get(itemType) :
- (itemsMonthlyIndexed.contains(itemType) ? indexName + "*" +
INDEX_DATE_PREFIX + "*" : indexName);
+ (itemsMonthlyIndexed.contains(itemType) ? indexPrefix + "*" +
INDEX_DATE_PREFIX + "*" : getIndex(itemType, null));
}
private String getConfig(Map<String, String> settings, String key,
@@ -1873,11 +1866,11 @@ public class ElasticSearchPersistenceServiceImpl
implements PersistenceService,
String indexItemTypePart = indexNames.containsKey(itemType) ?
indexNames.get(itemType) :
(itemsMonthlyIndexed.contains(itemType) && dateHint != null ?
itemType + "-" + getMonthlyIndexPart(dateHint) : itemType);
- return indexName + "-" + indexItemTypePart;
+ return (indexPrefix + "-" + indexItemTypePart).toLowerCase();
}
private String getMonthlyIndexPart(Date date) {
- String d = new SimpleDateFormat("-yyyy-MM").format(date);
+ String d = new SimpleDateFormat("yyyy-MM").format(date);
return INDEX_DATE_PREFIX + d;
}
diff --git
a/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/event.json
b/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/actiontype.json
similarity index 80%
copy from
persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/event.json
copy to
persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/actiontype.json
index 829091a..e1ac5f8 100644
---
a/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/event.json
+++
b/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/actiontype.json
@@ -16,11 +16,5 @@
}
}
}
- ],
- "properties": {
- "timeStamp": {
- "type": "date"
- }
- }
-}
-
+ ]
+}
\ No newline at end of file
diff --git
a/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/campaign.json
b/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/campaign.json
index 6290fb6..d0ed2d3 100644
---
a/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/campaign.json
+++
b/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/campaign.json
@@ -17,31 +17,31 @@
}
}
],
- "properties": {
- "cost": {
- "type": "double"
- },
- "startDate": {
- "type": "date"
- },
- "endDate": {
- "type": "date"
- },
- "metadata": {
- "properties": {
- "enabled": {
- "type": "boolean"
- },
- "hidden": {
- "type": "boolean"
- },
- "missingPlugins": {
- "type": "boolean"
- },
- "readOnly": {
- "type": "boolean"
- }
+ "properties": {
+ "cost": {
+ "type": "double"
+ },
+ "startDate": {
+ "type": "date"
+ },
+ "endDate": {
+ "type": "date"
+ },
+ "metadata": {
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ },
+ "hidden": {
+ "type": "boolean"
+ },
+ "missingPlugins": {
+ "type": "boolean"
+ },
+ "readOnly": {
+ "type": "boolean"
}
}
}
+ }
}
\ No newline at end of file
diff --git
a/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/campaignevent.json
b/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/campaignevent.json
index 9b05a7f..7d6a564 100644
---
a/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/campaignevent.json
+++
b/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/campaignevent.json
@@ -18,27 +18,27 @@
}
],
"properties": {
- "cost": {
- "type": "double"
- },
- "eventDate": {
- "type": "date"
- },
- "metadata": {
- "properties": {
- "enabled": {
- "type": "boolean"
- },
- "hidden": {
- "type": "boolean"
- },
- "missingPlugins": {
- "type": "boolean"
- },
- "readOnly": {
- "type": "boolean"
- }
+ "cost": {
+ "type": "double"
+ },
+ "eventDate": {
+ "type": "date"
+ },
+ "metadata": {
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ },
+ "hidden": {
+ "type": "boolean"
+ },
+ "missingPlugins": {
+ "type": "boolean"
+ },
+ "readOnly": {
+ "type": "boolean"
}
}
}
+ }
}
\ No newline at end of file
diff --git
a/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/event.json
b/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/conditiontype.json
similarity index 80%
copy from
persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/event.json
copy to
persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/conditiontype.json
index 829091a..e1ac5f8 100644
---
a/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/event.json
+++
b/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/conditiontype.json
@@ -16,11 +16,5 @@
}
}
}
- ],
- "properties": {
- "timeStamp": {
- "type": "date"
- }
- }
-}
-
+ ]
+}
\ No newline at end of file
diff --git
a/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/event.json
b/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/event.json
index 829091a..ca8c404 100644
---
a/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/event.json
+++
b/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/event.json
@@ -17,10 +17,10 @@
}
}
],
- "properties": {
- "timeStamp": {
- "type": "date"
- }
+ "properties": {
+ "timeStamp": {
+ "type": "date"
}
+ }
}
diff --git
a/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/event.json
b/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/exportconfig.json
similarity index 80%
copy from
persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/event.json
copy to
persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/exportconfig.json
index 829091a..e1ac5f8 100644
---
a/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/event.json
+++
b/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/exportconfig.json
@@ -16,11 +16,5 @@
}
}
}
- ],
- "properties": {
- "timeStamp": {
- "type": "date"
- }
- }
-}
-
+ ]
+}
\ No newline at end of file
diff --git
a/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/goal.json
b/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/goal.json
index 9627340..3d3322b 100644
---
a/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/goal.json
+++
b/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/goal.json
@@ -18,22 +18,21 @@
}
],
"properties": {
-
- "metadata": {
- "properties": {
- "enabled": {
- "type": "boolean"
- },
- "hidden": {
- "type": "boolean"
- },
- "missingPlugins": {
- "type": "boolean"
- },
- "readOnly": {
- "type": "boolean"
- }
+ "metadata": {
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ },
+ "hidden": {
+ "type": "boolean"
+ },
+ "missingPlugins": {
+ "type": "boolean"
+ },
+ "readOnly": {
+ "type": "boolean"
}
}
}
+ }
}
\ No newline at end of file
diff --git
a/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/event.json
b/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/importconfig.json
similarity index 80%
copy from
persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/event.json
copy to
persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/importconfig.json
index 829091a..e1ac5f8 100644
---
a/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/event.json
+++
b/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/importconfig.json
@@ -16,11 +16,5 @@
}
}
}
- ],
- "properties": {
- "timeStamp": {
- "type": "date"
- }
- }
-}
-
+ ]
+}
\ No newline at end of file
diff --git
a/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/profile.json
b/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/persona.json
similarity index 59%
copy from
persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/profile.json
copy to
persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/persona.json
index 2fef62f..d014245 100644
---
a/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/profile.json
+++
b/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/persona.json
@@ -18,22 +18,21 @@
}
],
"properties": {
-
+ "properties": {
"properties": {
- "properties": {
- "firstVisit": {
- "type": "date"
- },
- "lastVisit": {
- "type": "date"
- },
- "previousVisit": {
- "type": "date"
- },
- "nbOfVisits": {
- "type": "long"
- }
+ "firstVisit": {
+ "type": "date"
+ },
+ "lastVisit": {
+ "type": "date"
+ },
+ "previousVisit": {
+ "type": "date"
+ },
+ "nbOfVisits": {
+ "type": "long"
}
}
}
+ }
}
\ No newline at end of file
diff --git
a/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/personaSession.json
b/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/personaSession.json
index 901266d..c635e02 100644
---
a/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/personaSession.json
+++
b/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/personaSession.json
@@ -18,25 +18,24 @@
}
],
"properties": {
- "duration" : {
- "type" : "long"
- },
-
- "timeStamp": {
- "type": "date"
- },
- "lastEventDate": {
- "type": "date"
- },
- "properties" : {
- "properties" : {
- "location" : {
- "type" : "geo_point"
- }
+ "duration": {
+ "type": "long"
+ },
+ "timeStamp": {
+ "type": "date"
+ },
+ "lastEventDate": {
+ "type": "date"
+ },
+ "properties": {
+ "properties": {
+ "location": {
+ "type": "geo_point"
}
- },
- "size" : {
- "type" : "long"
}
+ },
+ "size": {
+ "type": "long"
}
+ }
}
\ No newline at end of file
diff --git
a/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/profile.json
b/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/profile.json
index 2fef62f..d014245 100644
---
a/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/profile.json
+++
b/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/profile.json
@@ -18,22 +18,21 @@
}
],
"properties": {
-
+ "properties": {
"properties": {
- "properties": {
- "firstVisit": {
- "type": "date"
- },
- "lastVisit": {
- "type": "date"
- },
- "previousVisit": {
- "type": "date"
- },
- "nbOfVisits": {
- "type": "long"
- }
+ "firstVisit": {
+ "type": "date"
+ },
+ "lastVisit": {
+ "type": "date"
+ },
+ "previousVisit": {
+ "type": "date"
+ },
+ "nbOfVisits": {
+ "type": "long"
}
}
}
+ }
}
\ No newline at end of file
diff --git
a/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/propertyType.json
b/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/propertyType.json
index 6adbd2a..3898c8c 100644
---
a/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/propertyType.json
+++
b/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/propertyType.json
@@ -18,44 +18,44 @@
}
],
"properties": {
- "dateRanges": {
- "properties": {
- }
- },
- "metadata": {
- "properties": {
- "enabled": {
- "type": "boolean"
- },
- "hidden": {
- "type": "boolean"
- },
- "missingPlugins": {
- "type": "boolean"
- },
- "readOnly": {
- "type": "boolean"
- }
+ "dateRanges": {
+ "properties": {
+ }
+ },
+ "metadata": {
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ },
+ "hidden": {
+ "type": "boolean"
+ },
+ "missingPlugins": {
+ "type": "boolean"
+ },
+ "readOnly": {
+ "type": "boolean"
}
- },
- "multivalued": {
- "type": "boolean"
- },
- "numericRanges": {
- "properties": {
- "from": {
- "type": "double"
- },
- "to": {
- "type": "double"
- }
+ }
+ },
+ "multivalued": {
+ "type": "boolean"
+ },
+ "numericRanges": {
+ "properties": {
+ "from": {
+ "type": "double"
+ },
+ "to": {
+ "type": "double"
}
- },
- "protected": {
- "type": "boolean"
- },
- "rank": {
- "type": "double"
}
+ },
+ "protected": {
+ "type": "boolean"
+ },
+ "rank": {
+ "type": "double"
}
+ }
}
\ No newline at end of file
diff --git
a/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/rule.json
b/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/rule.json
index 3561e61..2027c2f 100644
---
a/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/rule.json
+++
b/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/rule.json
@@ -18,30 +18,30 @@
}
],
"properties": {
- "metadata": {
- "properties": {
- "enabled": {
- "type": "boolean"
- },
- "hidden": {
- "type": "boolean"
- },
- "missingPlugins": {
- "type": "boolean"
- },
- "readOnly": {
- "type": "boolean"
- }
+ "metadata": {
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ },
+ "hidden": {
+ "type": "boolean"
+ },
+ "missingPlugins": {
+ "type": "boolean"
+ },
+ "readOnly": {
+ "type": "boolean"
}
- },
- "priority": {
- "type": "long"
- },
- "raiseEventOnlyOnceForProfile": {
- "type": "boolean"
- },
- "raiseEventOnlyOnceForSession": {
- "type": "boolean"
}
+ },
+ "priority": {
+ "type": "long"
+ },
+ "raiseEventOnlyOnceForProfile": {
+ "type": "boolean"
+ },
+ "raiseEventOnlyOnceForSession": {
+ "type": "boolean"
}
+ }
}
\ No newline at end of file
diff --git
a/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/event.json
b/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/rulestats.json
similarity index 80%
copy from
persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/event.json
copy to
persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/rulestats.json
index 829091a..e1ac5f8 100644
---
a/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/event.json
+++
b/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/rulestats.json
@@ -16,11 +16,5 @@
}
}
}
- ],
- "properties": {
- "timeStamp": {
- "type": "date"
- }
- }
-}
-
+ ]
+}
\ No newline at end of file
diff --git
a/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/scoring.json
b/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/scoring.json
index 8e256dd..dd890c7 100644
---
a/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/scoring.json
+++
b/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/scoring.json
@@ -17,23 +17,22 @@
}
}
],
- "properties": {
-
- "metadata": {
- "properties": {
- "enabled": {
- "type": "boolean"
- },
- "hidden": {
- "type": "boolean"
- },
- "missingPlugins": {
- "type": "boolean"
- },
- "readOnly": {
- "type": "boolean"
- }
+ "properties": {
+ "metadata": {
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ },
+ "hidden": {
+ "type": "boolean"
+ },
+ "missingPlugins": {
+ "type": "boolean"
+ },
+ "readOnly": {
+ "type": "boolean"
}
}
}
+ }
}
diff --git
a/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/segment.json
b/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/segment.json
index fa93d5b..dd890c7 100644
---
a/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/segment.json
+++
b/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/segment.json
@@ -17,24 +17,22 @@
}
}
],
- "properties": {
-
- "metadata": {
- "properties": {
- "enabled": {
- "type": "boolean"
- },
- "hidden": {
- "type": "boolean"
- },
-
- "missingPlugins": {
- "type": "boolean"
- },
- "readOnly": {
- "type": "boolean"
- }
+ "properties": {
+ "metadata": {
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ },
+ "hidden": {
+ "type": "boolean"
+ },
+ "missingPlugins": {
+ "type": "boolean"
+ },
+ "readOnly": {
+ "type": "boolean"
}
}
}
+ }
}
diff --git
a/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/session.json
b/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/session.json
index 7cc4061..dc1ae46 100644
---
a/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/session.json
+++
b/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/session.json
@@ -18,27 +18,24 @@
}
],
"properties": {
- "duration": {
- "type": "long"
- },
-
- "lastEventDate": {
- "type": "date"
- },
-
+ "duration": {
+ "type": "long"
+ },
+ "lastEventDate": {
+ "type": "date"
+ },
+ "properties": {
"properties": {
- "properties": {
- "location": {
- "type": "geo_point"
- }
+ "location": {
+ "type": "geo_point"
}
- },
-
- "size": {
- "type": "long"
- },
- "timeStamp": {
- "type": "date"
}
+ },
+ "size": {
+ "type": "long"
+ },
+ "timeStamp": {
+ "type": "date"
}
+ }
}
\ No newline at end of file
diff --git
a/persistence-elasticsearch/core/src/main/resources/OSGI-INF/blueprint/blueprint.xml
b/persistence-elasticsearch/core/src/main/resources/OSGI-INF/blueprint/blueprint.xml
index dadf585..f3a937e 100644
---
a/persistence-elasticsearch/core/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+++
b/persistence-elasticsearch/core/src/main/resources/OSGI-INF/blueprint/blueprint.xml
@@ -32,7 +32,7 @@
<cm:default-properties>
<cm:property name="cluster.name" value="contextElasticSearch"/>
<cm:property name="elasticSearchAddresses" value="localhost:9200"/>
- <cm:property name="index.name" value="context"/>
+ <cm:property name="index.prefix" value="context"/>
<cm:property name="numberOfShards" value="5"/>
<cm:property name="numberOfReplicas" value="0"/>
<cm:property name="monthlyIndex.numberOfShards" value="3"/>
@@ -83,7 +83,7 @@
<property name="conditionEvaluatorDispatcher"
ref="conditionEvaluatorDispatcherImpl"/>
<property name="conditionESQueryBuilderDispatcher"
ref="conditionESQueryBuilderDispatcher"/>
<property name="clusterName" value="${es.cluster.name}"/>
- <property name="indexName" value="${es.index.name}"/>
+ <property name="indexPrefix" value="${es.index.prefix}"/>
<property name="monthlyIndexNumberOfShards"
value="${es.monthlyIndex.numberOfShards}"/>
<property name="monthlyIndexNumberOfReplicas"
value="${es.monthlyIndex.numberOfReplicas}"/>
<property name="numberOfShards" value="${es.numberOfShards}"/>
@@ -100,11 +100,6 @@
<map>
</map>
</property>
- <property name="indexNames">
- <map>
- <entry key="geonameEntry" value="geonames"/>
- </map>
- </property>
<property name="bulkProcessorConcurrentRequests"
value="${es.bulkProcessor.concurrentRequests}" />
<property name="bulkProcessorBulkActions"
value="${es.bulkProcessor.bulkActions}" />
<property name="bulkProcessorBulkSize"
value="${es.bulkProcessor.bulkSize}" />
diff --git
a/persistence-elasticsearch/core/src/main/resources/org.apache.unomi.persistence.elasticsearch.cfg
b/persistence-elasticsearch/core/src/main/resources/org.apache.unomi.persistence.elasticsearch.cfg
index 8e7dc7b..a21e86e 100644
---
a/persistence-elasticsearch/core/src/main/resources/org.apache.unomi.persistence.elasticsearch.cfg
+++
b/persistence-elasticsearch/core/src/main/resources/org.apache.unomi.persistence.elasticsearch.cfg
@@ -20,7 +20,7 @@
cluster.name=${org.apache.unomi.elasticsearch.cluster.name:-contextElasticSearch
# hostA:9200,hostB:9200
# Note: the port number must be repeated for each host.
elasticSearchAddresses=${org.apache.unomi.elasticsearch.addresses:-localhost:9200}
-index.name=${org.apache.unomi.elasticsearch.index.name:-context}
+index.prefix=${org.apache.unomi.elasticsearch.index.prefix:-context}
monthlyIndex.numberOfShards=${org.apache.unomi.elasticsearch.monthlyIndex.nbShards:-5}
monthlyIndex.numberOfReplicas=${org.apache.unomi.elasticsearch.monthlyIndex.nbReplicas:-0}
numberOfShards=${org.apache.unomi.elasticsearch.defaultIndex.nbShards:-5}