You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@unomi.apache.org by ql...@apache.org on 2016/08/26 13:19:15 UTC
incubator-unomi git commit: UNOMI-54 : Add mappings for scoring and
userList + add score mapping in profile
Repository: incubator-unomi
Updated Branches:
refs/heads/master ec58db2c9 -> c63d85e39
UNOMI-54 : Add mappings for scoring and userList + add score mapping in profile
Project: http://git-wip-us.apache.org/repos/asf/incubator-unomi/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-unomi/commit/c63d85e3
Tree: http://git-wip-us.apache.org/repos/asf/incubator-unomi/tree/c63d85e3
Diff: http://git-wip-us.apache.org/repos/asf/incubator-unomi/diff/c63d85e3
Branch: refs/heads/master
Commit: c63d85e39ea6eb801bd7f3636420051d5b33fa39
Parents: ec58db2
Author: Quentin Lamerand <ql...@jahia.com>
Authored: Fri Aug 26 15:19:08 2016 +0200
Committer: Quentin Lamerand <ql...@jahia.com>
Committed: Fri Aug 26 15:19:08 2016 +0200
----------------------------------------------------------------------
.../META-INF/cxs/mappings/userList.json | 44 +++++++++++++-
.../ElasticSearchPersistenceServiceImpl.java | 35 +++++++----
.../META-INF/cxs/mappings/scoring.json | 62 ++++++++++++++++++++
.../persistence/spi/PersistenceService.java | 9 ++-
.../services/services/EventServiceImpl.java | 7 ++-
.../services/services/ProfileServiceImpl.java | 2 +-
.../services/services/SegmentServiceImpl.java | 15 +++++
7 files changed, 156 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/c63d85e3/extensions/lists-extension/services/src/main/resources/META-INF/cxs/mappings/userList.json
----------------------------------------------------------------------
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 8a8b9de..3bb8ae0 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
@@ -11,6 +11,48 @@
}
}
}
- ]
+ ],
+ "properties": {
+ "itemId": {
+ "type": "string",
+ "analyzer": "folding"
+ },
+ "itemType": {
+ "type": "string",
+ "analyzer": "folding"
+ },
+ "metadata": {
+ "properties": {
+ "description": {
+ "type": "string",
+ "analyzer": "folding"
+ },
+ "enabled": {
+ "type": "boolean"
+ },
+ "hidden": {
+ "type": "boolean"
+ },
+ "id": {
+ "type": "string",
+ "analyzer": "folding"
+ },
+ "missingPlugins": {
+ "type": "boolean"
+ },
+ "name": {
+ "type": "string",
+ "analyzer": "folding"
+ },
+ "readOnly": {
+ "type": "boolean"
+ },
+ "scope": {
+ "type": "string",
+ "analyzer": "folding"
+ }
+ }
+ }
+ }
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/c63d85e3/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ElasticSearchPersistenceServiceImpl.java
----------------------------------------------------------------------
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 7bf2f14..9e59f63 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
@@ -279,6 +279,10 @@ public class ElasticSearchPersistenceServiceImpl implements PersistenceService,
}
internalCreateIndex(indexName, indexMappings);
+ } else {
+ for (Map.Entry<String, String> entry : mappings.entrySet()) {
+ createMapping(entry.getKey(), entry.getValue());
+ }
}
client.admin().indices().preparePutTemplate(indexName + "_monthlyindex")
@@ -416,17 +420,10 @@ public class ElasticSearchPersistenceServiceImpl implements PersistenceService,
while ((l = reader.readLine()) != null) {
content.append(l);
}
- mappings.put(name, content.toString());
+ String mappingSource = content.toString();
+ mappings.put(name, mappingSource);
if (createMapping) {
- if (itemsMonthlyIndexed.contains(name)) {
- createMapping(name, content.toString(), indexName + "-*");
- } else if (indexNames.containsKey(name)) {
- if (client.admin().indices().prepareExists(indexNames.get(name)).execute().actionGet().isExists()) {
- createMapping(name, content.toString(), indexNames.get(name));
- }
- } else {
- createMapping(name, content.toString(), indexName);
- }
+ createMapping(name, mappingSource);
}
} catch (Exception e) {
logger.error("Error while loading mapping definition " + predefinedMappingURL, e);
@@ -685,17 +682,29 @@ public class ElasticSearchPersistenceServiceImpl implements PersistenceService,
}
- private boolean createMapping(final String type, final String source, final String indexName) {
+ private void createMapping(final String type, final String source, final String indexName) {
client.admin().indices()
.preparePutMapping(indexName)
.setType(type)
.setSource(source)
.execute().actionGet();
- return true;
}
@Override
- public Map<String, Map<String, Object>> getMapping(final String itemType) {
+ public void createMapping(String type, String source) {
+ if (itemsMonthlyIndexed.contains(type)) {
+ createMapping(type, source, indexName + "-*");
+ } else if (indexNames.containsKey(type)) {
+ if (client.admin().indices().prepareExists(indexNames.get(type)).execute().actionGet().isExists()) {
+ createMapping(type, source, indexNames.get(type));
+ }
+ } else {
+ createMapping(type, source, indexName);
+ }
+ }
+
+ @Override
+ public Map<String, Map<String, Object>> getPropertiesMapping(final String itemType) {
return new InClassLoaderExecute<Map<String, Map<String, Object>>>() {
@SuppressWarnings("unchecked")
protected Map<String, Map<String, Object>> execute(Object... args) {
http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/c63d85e3/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/scoring.json
----------------------------------------------------------------------
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
new file mode 100644
index 0000000..b62d0a6
--- /dev/null
+++ b/persistence-elasticsearch/core/src/main/resources/META-INF/cxs/mappings/scoring.json
@@ -0,0 +1,62 @@
+{
+ "scoring": {
+ "dynamic_templates": [
+ {
+ "all": {
+ "match": "*",
+ "match_mapping_type": "string",
+ "mapping": {
+ "type": "string",
+ "analyzer": "folding"
+ }
+ }
+ }
+ ],
+ "properties": {
+ "itemId": {
+ "type": "string",
+ "analyzer": "folding"
+ },
+ "itemType": {
+ "type": "string",
+ "analyzer": "folding"
+ },
+ "metadata": {
+ "properties": {
+ "description": {
+ "type": "string",
+ "analyzer": "folding"
+ },
+ "enabled": {
+ "type": "boolean"
+ },
+ "hidden": {
+ "type": "boolean"
+ },
+ "id": {
+ "type": "string",
+ "analyzer": "folding"
+ },
+ "missingPlugins": {
+ "type": "boolean"
+ },
+ "name": {
+ "type": "string",
+ "analyzer": "folding"
+ },
+ "readOnly": {
+ "type": "boolean"
+ },
+ "scope": {
+ "type": "string",
+ "analyzer": "folding"
+ },
+ "tags": {
+ "type": "string",
+ "analyzer": "folding"
+ }
+ }
+ }
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/c63d85e3/persistence-spi/src/main/java/org/apache/unomi/persistence/spi/PersistenceService.java
----------------------------------------------------------------------
diff --git a/persistence-spi/src/main/java/org/apache/unomi/persistence/spi/PersistenceService.java b/persistence-spi/src/main/java/org/apache/unomi/persistence/spi/PersistenceService.java
index fc64d55..90b0efc 100644
--- a/persistence-spi/src/main/java/org/apache/unomi/persistence/spi/PersistenceService.java
+++ b/persistence-spi/src/main/java/org/apache/unomi/persistence/spi/PersistenceService.java
@@ -168,7 +168,14 @@ public interface PersistenceService {
* @param itemType
* @return
*/
- Map<String, Map<String, Object>> getMapping(String itemType);
+ Map<String, Map<String, Object>> getPropertiesMapping(String itemType);
+
+ /**
+ * Create mapping
+ * @param type
+ * @param source
+ */
+ void createMapping(String type, String source);
/**
* TODO
http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/c63d85e3/services/src/main/java/org/apache/unomi/services/services/EventServiceImpl.java
----------------------------------------------------------------------
diff --git a/services/src/main/java/org/apache/unomi/services/services/EventServiceImpl.java b/services/src/main/java/org/apache/unomi/services/services/EventServiceImpl.java
index 70bd06d..2a39eb1 100644
--- a/services/src/main/java/org/apache/unomi/services/services/EventServiceImpl.java
+++ b/services/src/main/java/org/apache/unomi/services/services/EventServiceImpl.java
@@ -18,7 +18,10 @@
package org.apache.unomi.services.services;
import org.apache.commons.lang3.StringUtils;
-import org.apache.unomi.api.*;
+import org.apache.unomi.api.Event;
+import org.apache.unomi.api.EventProperty;
+import org.apache.unomi.api.PartialList;
+import org.apache.unomi.api.Session;
import org.apache.unomi.api.actions.ActionPostExecutor;
import org.apache.unomi.api.conditions.Condition;
import org.apache.unomi.api.services.DefinitionsService;
@@ -164,7 +167,7 @@ public class EventServiceImpl implements EventService {
@Override
public List<EventProperty> getEventProperties() {
- Map<String, Map<String, Object>> mappings = persistenceService.getMapping(Event.ITEM_TYPE);
+ Map<String, Map<String, Object>> mappings = persistenceService.getPropertiesMapping(Event.ITEM_TYPE);
List<EventProperty> props = new ArrayList<>(mappings.size());
getEventProperties(mappings, props, "");
return props;
http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/c63d85e3/services/src/main/java/org/apache/unomi/services/services/ProfileServiceImpl.java
----------------------------------------------------------------------
diff --git a/services/src/main/java/org/apache/unomi/services/services/ProfileServiceImpl.java b/services/src/main/java/org/apache/unomi/services/services/ProfileServiceImpl.java
index aee8832..4e680fc 100644
--- a/services/src/main/java/org/apache/unomi/services/services/ProfileServiceImpl.java
+++ b/services/src/main/java/org/apache/unomi/services/services/ProfileServiceImpl.java
@@ -299,7 +299,7 @@ public class ProfileServiceImpl implements ProfileService, SynchronousBundleList
Set<PropertyType> filteredProperties = new LinkedHashSet<PropertyType>();
// TODO: here we limit the result to the definition we have, but what if some properties haven't definition but exist in ES mapping ?
Set<PropertyType> profileProperties = getPropertyTypeByTag(tagId, true);
- Map<String, Map<String, Object>> itemMapping = persistenceService.getMapping(itemType);
+ Map<String, Map<String, Object>> itemMapping = persistenceService.getPropertiesMapping(itemType);
if (itemMapping == null || itemMapping.isEmpty() || itemMapping.get("properties") == null || itemMapping.get("properties").get("properties") == null) {
return filteredProperties;
http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/c63d85e3/services/src/main/java/org/apache/unomi/services/services/SegmentServiceImpl.java
----------------------------------------------------------------------
diff --git a/services/src/main/java/org/apache/unomi/services/services/SegmentServiceImpl.java b/services/src/main/java/org/apache/unomi/services/services/SegmentServiceImpl.java
index 85c6dc3..7263b28 100644
--- a/services/src/main/java/org/apache/unomi/services/services/SegmentServiceImpl.java
+++ b/services/src/main/java/org/apache/unomi/services/services/SegmentServiceImpl.java
@@ -532,6 +532,21 @@ public class SegmentServiceImpl implements SegmentService, SynchronousBundleList
// make sure we update the name and description metadata that might not match, so first we remove the entry from the map
persistenceService.save(scoring);
+ persistenceService.createMapping(Profile.ITEM_TYPE, String.format(
+ "{\n" +
+ " \"profile\": {\n" +
+ " \"properties\" : {\n" +
+ " \"scores\": {\n" +
+ " \"properties\": {\n" +
+ " \"%s\": {\n" +
+ " \"type\": \"long\"\n" +
+ " }\n" +
+ " }\n" +
+ " }\n" +
+ " }\n" +
+ " }\n" +
+ "}\n", scoring.getItemId()));
+
updateExistingProfilesForScoring(scoring);
}