Browse Source

Docs: Reorganised the mapping home page

Clinton Gormley 10 years ago
parent
commit
7977979146
2 changed files with 98 additions and 66 deletions
  1. 71 66
      docs/reference/mapping.asciidoc
  2. 27 0
      docs/reference/mapping/types.asciidoc

+ 71 - 66
docs/reference/mapping.asciidoc

@@ -36,47 +36,10 @@ treated. Examples of meta-fields include the document's
 
 Each mapping type contains a list of fields or `properties` pertinent to that
 type.  A `user` type might contain `title`, `name`, and `age` fields, while a
-`blogpost` type might contain `title`, `body`, `user_id` and `created`
-fields.
+`blogpost` type might contain `title`, `body`, `user_id` and `created` fields.
+Fields with the same name in different mapping types in the same index
+<<field-conflicts,must have the same mapping>>.
 
-The mapping for the above example could look like this:
-
-[source,js]
----------------------------------------
-PUT my_index <1>
-{
-  "mappings": {
-    "user": { <2>
-      "_all":       { "enabled": false  }, <3>
-      "properties": { <4>
-        "title":    { "type": "string"  }, <5>
-        "name":     { "type": "string"  }, <5>
-        "age":      { "type": "integer" }  <5>
-      }
-    },
-    "blogpost": { <2>
-      "properties": { <4>
-        "title":    { "type": "string"  }, <5>
-        "body":     { "type": "string"  }, <5>
-        "user_id":  {
-          "type":   "string", <5>
-          "index":  "not_analyzed"
-        },
-        "created":  {
-          "type":   "date", <5>
-          "format": "strict_date_optional_time||epoch_millis"
-        }
-      }
-    }
-  }
-}
----------------------------------------
-// AUTOSENSE
-<1> Create an index called `my_index`.
-<2> Add mapping types called `user` and `blogpost`.
-<3> Disable the `_all` <<mapping-fields,meta field>> for the `user` mapping type.
-<4> Specify fields or _properties_ in each mapping type.
-<5> Specify the data `type` and mapping for each field.
 
 [float]
 == Field datatypes
@@ -90,32 +53,6 @@ Each field has a data `type` which can be:
 * or a specialised type like <<geo-point,`geo_point`>>,
   <<geo-shape,`geo_shape`>>, or <<search-suggesters-completion,`completion`>>.
 
-[IMPORTANT]
-.Fields are shared across mapping types
-=========================================
-
-Mapping types are used to group fields, but the fields in each mapping type
-are not independent of each other. Fields with:
-
-* the _same name_
-* in the _same index_
-* in _different mapping types_
-* map to the _same field_ internally,
-* and *must have the same mapping*.
-
-The `title` field exists in both the `user` and `blogpost` mapping types and
-so must have exactly the same mapping in each type.  The only exceptions to
-this rule are the <<copy-to>>, <<dynamic>>, <<enabled>>, <<ignore-above>>,
-<<include-in-all>>, and <<properties>> parameters, which may have different
-settings per field.
-
-Usually, fields with the same name also contain the same type of data, so
-having the same mapping is not a problem.  When conflicts do arise, these can
-be solved by choosing more descriptive names, such as `user_title` and
-`blog_title`.
-
-=========================================
-
 [float]
 == Dynamic mapping
 
@@ -148,6 +85,74 @@ updated*. Changing the mapping would mean invalidating already indexed
 documents.  Instead, you should create a new index with the correct mappings
 and reindex your data into that index.
 
+[[field-conflicts]]
+[float]
+== Fields are shared across mapping types
+
+Mapping types are used to group fields, but the fields in each mapping type
+are not independent of each other. Fields with:
+
+* the _same name_
+* in the _same index_
+* in _different mapping types_
+* map to the _same field_ internally,
+* and *must have the same mapping*.
+
+If a `title` field exists in both the `user` and `blogpost` mapping types, the
+`title` fields must have exactly the same mapping in each type.  The only
+exceptions to this rule are the <<copy-to>>, <<dynamic>>, <<enabled>>,
+<<ignore-above>>, <<include-in-all>>, and <<properties>> parameters, which may
+have different settings per field.
+
+Usually, fields with the same name also contain the same type of data, so
+having the same mapping is not a problem.  When conflicts do arise, these can
+be solved by choosing more descriptive names, such as `user_title` and
+`blog_title`.
+
+[float]
+== Example mapping
+
+A mapping for the example described above could be specified when creating the
+index, as follows:
+
+[source,js]
+---------------------------------------
+PUT my_index <1>
+{
+  "mappings": {
+    "user": { <2>
+      "_all":       { "enabled": false  }, <3>
+      "properties": { <4>
+        "title":    { "type": "string"  }, <5>
+        "name":     { "type": "string"  }, <5>
+        "age":      { "type": "integer" }  <5>
+      }
+    },
+    "blogpost": { <2>
+      "properties": { <4>
+        "title":    { "type": "string"  }, <5>
+        "body":     { "type": "string"  }, <5>
+        "user_id":  {
+          "type":   "string", <5>
+          "index":  "not_analyzed"
+        },
+        "created":  {
+          "type":   "date", <5>
+          "format": "strict_date_optional_time||epoch_millis"
+        }
+      }
+    }
+  }
+}
+---------------------------------------
+// AUTOSENSE
+<1> Create an index called `my_index`.
+<2> Add mapping types called `user` and `blogpost`.
+<3> Disable the `_all` <<mapping-fields,meta field>> for the `user` mapping type.
+<4> Specify fields or _properties_ in each mapping type.
+<5> Specify the data `type` and mapping for each field.
+
+
 --
 
 include::mapping/types.asciidoc[]

+ 27 - 0
docs/reference/mapping/types.asciidoc

@@ -40,6 +40,33 @@ Attachment datatype::
     which supports indexing ``attachments'' like Microsoft Office formats, Open
     Document formats, ePub, HTML, etc. into an `attachment` datatype.
 
+[[field-conflicts]]
+[IMPORTANT]
+.Fields are shared across mapping types
+=========================================
+
+Mapping types are used to group fields, but the fields in each mapping type
+are not independent of each other. Fields with:
+
+* the _same name_
+* in the _same index_
+* in _different mapping types_
+* map to the _same field_ internally,
+* and *must have the same mapping*.
+
+If a `title` field exists in both the `user` and `blogpost` mapping types, the
+`title` fields must have exactly the same mapping in each type.  The only
+exceptions to this rule are the <<copy-to>>, <<dynamic>>, <<enabled>>,
+<<ignore-above>>, <<include-in-all>>, and <<properties>> parameters, which may
+have different settings per field.
+
+Usually, fields with the same name also contain the same type of data, so
+having the same mapping is not a problem.  When conflicts do arise, these can
+be solved by choosing more descriptive names, such as `user_title` and
+`blog_title`.
+
+=========================================
+
 include::types/array.asciidoc[]
 
 include::types/binary.asciidoc[]