2

のオブジェクトの一部だけにインデックスを付けることはできます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" を追加すると、期待どおりに機能します。

4

1 に答える 1

3

これは、型全体または内部オブジェクト レコードのみで動的マッピングを無効にすることで実現できます。

"mappings": {
    "doc": {
        "properties": {
            "record": {
                "type": "object",
                "properties": {
                    "city": {"type": "string"}
                },
                "dynamic": false
            }
        }
    }
}
于 2013-07-11T18:00:28.473 に答える