diff --git a/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/service/AbstractService.java b/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/service/AbstractService.java index 0e29f0c782a0082cba974f8e35af068e279c0849..e167691c5b326650089ba6ea46f7a5a5c1e9b17b 100644 --- a/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/service/AbstractService.java +++ b/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/service/AbstractService.java @@ -295,6 +295,52 @@ public abstract class AbstractService implements Bean { } } + protected XContentBuilder createRecordCommentType(String index, String type) { + String stringAnalyzer = pluginSettings.getDefaultStringAnalyzer(); + + try { + XContentBuilder mapping = XContentFactory.jsonBuilder().startObject().startObject(type) + .startObject("properties") + + // issuer + .startObject("issuer") + .field("type", "string") + .field("index", "not_analyzed") + .endObject() + + // time + .startObject("time") + .field("type", "integer") + .endObject() + + // message + .startObject("message") + .field("type", "string") + .field("analyzer", stringAnalyzer) + .endObject() + + // record + .startObject("record") + .field("type", "string") + .field("index", "not_analyzed") + .endObject() + + // reply to + .startObject("reply_to") + .field("type", "string") + .field("index", "not_analyzed") + .endObject() + + .endObject() + .endObject().endObject(); + + return mapping; + } + catch(IOException ioe) { + throw new TechnicalException(String.format("Error while getting mapping for index [%s/%s]: %s", index, type, ioe.getMessage()), ioe); + } + } + public interface StringReaderHandler { String onReadLine(String line); diff --git a/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/service/MarketService.java b/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/service/MarketService.java index 6fe07d89fe01dc6be0017c38e2d39bed0f35b3c4..ba8653b4a5c276054f3ad9fe2952912b1baff821 100644 --- a/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/service/MarketService.java +++ b/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/service/MarketService.java @@ -109,7 +109,7 @@ public class MarketService extends AbstractService { createIndexRequestBuilder.setSettings(indexSettings); createIndexRequestBuilder.addMapping(RECORD_CATEGORY_TYPE, createRecordCategoryType()); createIndexRequestBuilder.addMapping(RECORD_TYPE, createRecordType()); - createIndexRequestBuilder.addMapping(RECORD_COMMENT_TYPE, createRecordCommentType()); + createIndexRequestBuilder.addMapping(RECORD_COMMENT_TYPE, createRecordCommentType(INDEX, RECORD_COMMENT_TYPE)); createIndexRequestBuilder.execute().actionGet(); return this; @@ -371,18 +371,22 @@ public class MarketService extends AbstractService { .field("type", "integer") .endObject() - // categories - .startObject("categories") + // category + .startObject("category") .field("type", "nested") + .field("dynamic", "false") .startObject("properties") - .startObject("cat1") // cat1 + .startObject("id") // author .field("type", "string") .field("index", "not_analyzed") .endObject() - .startObject("cat2") // cat2 + .startObject("parent") // author .field("type", "string") .field("index", "not_analyzed") .endObject() + .startObject("name") // author + .field("type", "string") + .endObject() .endObject() .endObject() @@ -404,50 +408,6 @@ public class MarketService extends AbstractService { } } - public XContentBuilder createRecordCommentType() { - String stringAnalyzer = pluginSettings.getDefaultStringAnalyzer(); - - try { - XContentBuilder mapping = XContentFactory.jsonBuilder().startObject().startObject(RECORD_COMMENT_TYPE) - .startObject("properties") - - // issuer - .startObject("issuer") - .field("type", "string") - .field("index", "not_analyzed") - .endObject() - - // time - .startObject("time") - .field("type", "integer") - .endObject() - - // message - .startObject("message") - .field("type", "string") - .field("analyzer", stringAnalyzer) - .endObject() - - // record - .startObject("record") - .field("type", "string") - .field("index", "not_analyzed") - .endObject() - // reply to - .startObject("reply_to") - .field("type", "string") - .field("index", "not_analyzed") - .endObject() - - .endObject() - .endObject().endObject(); - - return mapping; - } - catch(IOException ioe) { - throw new TechnicalException(String.format("Error while getting mapping for index [%s/%s]: %s", INDEX, RECORD_COMMENT_TYPE, ioe.getMessage()), ioe); - } - } } diff --git a/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/service/RegistryService.java b/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/service/RegistryService.java index 9f595ec0ff8ee0cb585ae4806d366ffb9c06d1c5..0a448fb4e60e213dc3464444da666d09c73a19c9 100644 --- a/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/service/RegistryService.java +++ b/duniter4j-elasticsearch/src/main/java/org/duniter/elasticsearch/service/RegistryService.java @@ -74,6 +74,7 @@ public class RegistryService extends AbstractService { public static final String INDEX = "registry"; public static final String RECORD_TYPE = "record"; public static final String RECORD_CATEGORY_TYPE = "category"; + public static final String RECORD_COMMENT_TYPE = "comment"; public static final String CURRENCY_TYPE = "currency"; private static final String CATEGORIES_BULK_CLASSPATH_FILE = "registry-categories-bulk-insert.json"; @@ -125,6 +126,7 @@ public class RegistryService extends AbstractService { createIndexRequestBuilder.addMapping(CURRENCY_TYPE, createCurrencyType()); createIndexRequestBuilder.addMapping(RECORD_CATEGORY_TYPE, createRecordCategoryType()); createIndexRequestBuilder.addMapping(RECORD_TYPE, createRecordType()); + createIndexRequestBuilder.addMapping(RECORD_COMMENT_TYPE, createRecordCommentType(INDEX, RECORD_COMMENT_TYPE)); createIndexRequestBuilder.execute().actionGet(); return this; @@ -394,8 +396,19 @@ public class RegistryService extends AbstractService { .field("index", "not_analyzed") .endObject() - // location - .startObject("location") + // pubkey + .startObject("pubkey") + .field("type", "string") + .field("index", "not_analyzed") + .endObject() + + // address + .startObject("address") + .field("type", "string") + .endObject() + + // city + .startObject("city") .field("type", "string") .endObject() @@ -424,18 +437,55 @@ public class RegistryService extends AbstractService { .endObject() .endObject() - // categories - .startObject("categories") + // pictures + .startObject("pictures") + .field("type", "nested") + .field("dynamic", "false") + .startObject("properties") + .startObject("file") // file + .field("type", "attachment") + .startObject("fields") + .startObject("content") // content + .field("index", "no") + .endObject() + .startObject("title") // title + .field("type", "string") + .field("store", "yes") + .field("analyzer", stringAnalyzer) + .endObject() + .startObject("author") // author + .field("type", "string") + .field("store", "no") + .endObject() + .startObject("content_type") // content_type + .field("store", "yes") + .endObject() + .endObject() + .endObject() + .endObject() + .endObject() + + // picturesCount + .startObject("picturesCount") + .field("type", "integer") + .endObject() + + // category + .startObject("category") .field("type", "nested") + .field("dynamic", "false") .startObject("properties") - .startObject("cat1") // cat1 + .startObject("id") // author .field("type", "string") .field("index", "not_analyzed") .endObject() - .startObject("cat2") // cat2 + .startObject("parent") // author .field("type", "string") .field("index", "not_analyzed") .endObject() + .startObject("name") // author + .field("type", "string") + .endObject() .endObject() .endObject()