为什么这些ElasticSearch字段不会出现在" Fields"?

时间:2015-01-20 18:06:38

标签: c# enums elasticsearch kibana nest

我无法解决这个问题。我正在使用ElasticProperty属性/装饰器创建新的ElasticSearch索引。以下是我创建索引的方法:

        client = ClientFactory(indexName);
        if (!client.IndexExists(indexName).Exists)
        {
            var set = new IndexSettings() { NumberOfShards = 1 };

            var an = new CustomAnalyzer() { Tokenizer = "standard" };
            an.Filter = new List<string>();
            an.Filter.Add("standard");
            an.Filter.Add("lowercase");
            an.Filter.Add("stop");
            an.Filter.Add("asciifolding");
            set.Analysis.Analyzers.Add("nospecialchars", an);

            client.CreateIndex(c => c
                .Index(indexName)
                .InitializeUsing(set)
                .AddMapping<ItemSearchable>(m => m.MapFromAttributes())
            );
        }

我的所有字段都是根据类中指定的属性正确创建的,除了这两个。它们是C#枚举,这可能是问题的一部分。我试图将它们作为数字字段保存在索引中......

    [Required, ElasticProperty(Index = FieldIndexOption.NotAnalyzed, Store = true, NumericType = NumberType.Short, IncludeInAll = false)]
    public Enums.PlatformType PlatformType { get; set; }

    [ElasticProperty(Index = FieldIndexOption.NotAnalyzed, Store = true, NumericType = NumberType.Short, OmitNorms = true, IncludeInAll = false)]
    public Enums.ItemType ItemType { get; set; }

当我设置索引并通过Kibana检查时,我在空索引的字段列表中根本看不到PlatformType或ItemType。

当我插入记录时,我可以将源(JSON)中的值看作数字(如预期的那样),但是&#34;字段&#34;不在那里。

所以我认为这是因为他们是C#enum类型,或者是因为我试图将其存储为数字。但是我很难理解为什么Elasticsearch正在跳过这些领域。非常感谢您提出的任何想法。

更新1 ...搜索仍然有效(即使字段部分没有显示这些字段)。我认为这可能只是一个Kibana问题。在表格视图中,它显示了我的两个字段......

enter image description here

并将鼠标悬停在这些三角形感叹号上表示&#34;此字段没有缓存映射。从设置&gt;刷新您的映射指数页面&#34;。但当然,我无法在Kibana中找到这样一个页面。

所以我可能会在幕后做得很好,这不是问题。是否有其他人对可能解决这个问题有什么了解,让它更清楚,或者这是否是已知的行为,我应该继续前进?感谢。

0 个答案:

没有答案