Elasticsearch中的mapping一旦创建,就不能再修改。但是添加字段是可以的。其实很简单,只需在原来的mapping上面直接新增加一个field,然后重新创建一下mapping就可以了。
原mapping的定义如下:
- private static XContentBuilder getMapping() throws Exception{
- XContentBuilder mapping = jsonBuilder()
- .startObject()
- .startObject("test")
- .startObject("properties")
- .startObject("id")
- .field("type", "long")
- .field("store", "yes")
- .endObject()
- .startObject("type")
- .field("type", "string")
- .field("index", "not_analyzed")
- .endObject()
- .startObject("catIds")
- .field("type", "integer")
- .endObject()
- .endObject()
- .endObject()
- .endObject();
- return mapping;
- }
现在加入要增加一个field,名称叫title。新增后的代码如下:
- private static XContentBuilder getMapping() throws Exception{
- XContentBuilder mapping = jsonBuilder()
- .startObject()
- .startObject("test")
- .startObject("properties")
- .startObject("id")
- .field("type", "long")
- .field("store", "yes")
- .endObject()
- .startObject("type")
- .field("type", "string")
- .field("index", "not_analyzed")
- .endObject()
- //新增字段
- .startObject("title")
- .field("type", "string")
- .field("index", "analyzed")
- .endObject()
- .startObject("catIds")
- .field("type", "integer")
- .endObject()
- .endObject()
- .endObject()
- .endObject();
- return mapping;
- }
然后重新putMapping即可。
还不知道如何创建mapping?请看这里。