【问题标题】:Elasticsearch Mapping - Multi field on nested object propertyElasticsearch 映射 - 嵌套对象属性上的多字段
【发布时间】:2016-01-27 06:05:22
【问题描述】:

我有以下属性

[Nested] public List<TagModel> Tags { get; set; }

而在TagModel中有如下属性

[String] public string Tag { get; set; }

我想使用 Nest 将 Tag 属性映射为多字段属性。

我认为这会起作用,

.String
    (s => s.Name
        (n => n.Tags.First()
            .Tag)
        .Fields
            (fi => fi.String
                (sub => sub.Name("partial")
                    .Analyzer("test"))
            .String
                (sub => sub.Name("middle")
                    .Analyzer("test2"))));

但在它输出的映射中,Tags 保持为:

"tags": {
    "type": "nested",
    "properties": {
        "tag": {
            "type": "string"
        },

然后在映射结束时:

"tags.tag": {
    "type": "string",
    "fields": {
        "partial": {
            "type": "string",
            "analyzer": "test",
        },
        "middle": {
            "type": "string",
            "analyzer": "test2",
        },

并抛出异常400reason": "Field name [tags.tag] cannot contain '.'"

我猜它不喜欢名称中的 linq First() 调用(这很奇怪,因为在嵌套项目中的搜索确实接受了这个......)

那么我怎样才能映射一个在一个属性中使用的类中的属性,该属性是一个nested 项目本身......

目前使用 Nest 2.0.0 alpha-2

【问题讨论】:

    标签: nest


    【解决方案1】:

    好的,所以在(很多)猜测和检查之后,可以按如下方式完成:

    x.Nested<TagModel>
        (ne => ne.Name(n => n.Tags)
            .AutoMap()
            .Properties
                (p => p.String
                        (s => s.Name(n => n.Tag)
                        .Fields
                            (fi => fi.String
                                (sub => sub.Name("partial")
                        .Analyzer("test"))
                    .String
                        (sub => sub.Name("middle")
                        .Analyzer("test2"))))));
    

    当模型中有其他属性时,AutoMap 似乎是必需的,即,如果我在TagModel 中有一个TagID,那么如果没有AutoMap,这里没有特别提到的任何其他属性都不会是映射(即使他们有属性等设置)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-20
      • 1970-01-01
      相关资源
      最近更新 更多