使用NEST

时间:2017-07-05 18:18:14

标签: c# elasticsearch nest elasticsearch-net

我正在尝试使用NEST库将一些基于JSON的Elasticsearch索引定义从elasticsearch-net 1.x转换为elasticsearch-net 5.4。原始映射包含类型为"dynamic_template"的{​​{1}},但我无法确定如何使用当前的NEST库重新创建此类型。

有一些遗留Github issues和文档指向能够使用字符串值"{dynamic_type}"在映射上设置显式Type(),但这些方法在当前不存在该库的版本。

这是我们原始的索引定义:

"{dynamic_type}"

我设法使用NEST重建几乎相同的映射,但是用于设置映射类型。

{
    "settings": {
        "number_of_shards": 2,
        "number_of_replicas": 2
    },
    "mappings": {
        "_default_": {
            "_all": {
                "enabled": false
            },
            "dynamic_templates": [{
                    "default_template": {
                        "match": "*",
                        "mapping": {
                            "type": "{dynamic_type}",
                            "index": "not_analyzed",
                            "doc_values": true
                        }
                    }
                }
            ],
            "properties": {
                "timestamp": {
                    "type": "date"
                }
            }
        }
    }
}

上面的create语句导致了这个索引定义:

_client.CreateIndex("test_index", desc => desc
    .Settings(settings => settings
        .NumberOfShards(2)
        .NumberOfReplicas(2))
    .Mappings(mappings => mappings
        .Map<object>("_default_", s => s
            .AllField(all => all
                .Enabled(false))
            .DynamicTemplates(dynamicTemplates => dynamicTemplates
                .DynamicTemplate("default_template", defaultTemplate => defaultTemplate
                    .Match("*")
                    .Mapping(mapping => mapping
                        .Generic(g => g
                            .Index(FieldIndexOption.NotAnalyzed)
                            .DocValues(true)
                        )
                    )
                )
            )
            .Properties(properties => properties
                .Date(date => date.Name("timestamp"))
            )
        )
    ));

那么,我错过了什么吗? { "settings": { "index.number_of_replicas": 2, "index.number_of_shards": 2 }, "mappings": { "_default_": { "_all": { "enabled": false }, "dynamic_templates": [ { "default_template": { "match": "*", "mapping": { "doc_values": true, "index": "not_analyzed" } } } ], "properties": { "timestamp": { "type": "date" } } } } } 甚至是必要的吗?

我不确定{dynamic_type}的用法,但它似乎接近我所追求的。 NEST图书馆迫切需要文档。

0 个答案:

没有答案