Elasticsearch - 仅索引对象的一部分

时间:2013-07-11 13:47:35

标签: elasticsearch

是否可以仅在elasticsearch

中为对象的某些部分编制索引

示例:

$ curl -XPUT 'http://localhost:9200/test/item/1' -d '
{
    "record": {
        "city": "London",
        "contact": "Some person name"
    }
}

$ curl -XPUT 'http://localhost:9200/test/item/2' -d '
{
    "record": {
        "city": "London",
        "contact": { "phone": "some-phone-number", "name": "Other person's name" }
    }
}

$ curl -XPUT 'http://localhost:9200/test/item/3' -d '
{
    "record": {
        "city": "Oslo",
        "headquarters": { "phone": "some-other-phone-number", 
                          "address": "some address" }
    }
}

我只想要搜索城市名称,我希望留下未编入索引且完全随意的对象的所有剩余部分。例如,某些字段可以从对象更改其类型。 是否可以编写允许这种行为的映射?

更新

我的最终解决方案如下:

{
     "test": {
        "dynamic": "false",
        "properties": {
            "name": {
                "type": "string"
            }
        }
    }
}

我在映射的最低层添加“dynamic”:“false”,它按预期工作。

1 个答案:

答案 0 :(得分:3)

您可以通过禁用整个类型或内部对象记录的动态映射来实现此目的:

"mappings": {
    "doc": {
        "properties": {
            "record": {
                "type": "object",
                "properties": {
                    "city": {"type": "string"}
                },
                "dynamic": false
            }
        }
    }
}