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()