我无法解决这个问题。我正在使用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问题。在表格视图中,它显示了我的两个字段......
并将鼠标悬停在这些三角形感叹号上表示&#34;此字段没有缓存映射。从设置&gt;刷新您的映射指数页面&#34;。但当然,我无法在Kibana中找到这样一个页面。
所以我可能会在幕后做得很好,这不是问题。是否有其他人对可能解决这个问题有什么了解,让它更清楚,或者这是否是已知的行为,我应该继续前进?感谢。