0

我的问题是:我有一个像这样的 JsonObject:

{
    "success": true,
    "type": "message",
    "body": {
    "_id": "5215bdd32de81e0c0f000005",
        "id": "411c79eb-a725-4ad9-9d82-2db54dfc80ee",
        "type": "metaModel",
        "title": "testchang",
        "authorId": "5215bd552de81e0c0f000001",
        "drawElems": [
        {
            "type": "App.draw.metaElem.ModelStartPhase",
            "id": "27re7e35-550j",
            "x": 60,
            "y": 50,
            "width": 50,
            "height": 50,
            "title": "problem engagement",
            "isGhost": true,
            "pointTo": "e88e2845-37a4-4c45-a030-d02a3c3e03f9",
            "bindingId": "90f79d70-0afc-11e3-98d2-83967d2ad9a6",
            "model": "meta",
            "entityType": "phase",
            "domainId": "411c79eb-a725-4ad9-9d82-2db54dfc80ee",
            "authorId": "5215bd552de81e0c0f000001",
            "userData": {},
            "_id": "5215f4c5d89f629c1700000d"
        },
       {...}
      ]
    }
}

我试图定义一个映射如下,只索引这个对象的一部分。

String mapping = XContentFactory.jsonBuilder()
                    .startObject()
                    .startObject("domaindata").field("dynamic","false")
                    .startObject("properties")
                            .startObject("id").field("type","string").field("store","yes").endObject()
                           .startObject("type").field("type","string").field("store","yes").endObject()
                            .startObject("title").field("type","integer").field("store","yes").endObject()
.startObject("drawElems")
.startObject("properties")
                             .startObject("type").field("store","yes").field("type","string").endObject()
                                 .startObject("title").field("store","yes").field("type","string").endObject()
.endObject().endObject().endObject().endObject().endObject().string();

将此映射添加到我的类型后:

node.client().admin()
                .indices().prepareCreate("test")
                .addMapping("domaindata", mapping)
                .execute().actionGet();

我的 indexresponse 中仍然有所有 jsonobject,看来我的映射不起作用。

有人可以帮助我吗?非常感谢!

4

1 回答 1

1

这里的问题是,使用静态映射仅意味着映射中不存在的字段不会被添加到其中,因此也不会被索引。但由于它们是您发送的源文档的一部分,它们将作为_source字段的一部分返回。

如果您在此处"enable":false提到的映射 () 中禁用特定对象,情况也是如此。该对象不会被解析或索引,但仍将是存储字段的一部分。_source

如果您想避免存储部分内容,_source可以使用此处所述的源包含/排除功能。

于 2013-09-10T04:32:52.193 回答