对ElasticSearch / NEST来说是相当新的--我在地图上有一个存放英国邮政编码的属性(如DT5 2 2HW,BB1 9DR)。目前,我有以下代码:
if (!client.IndexExists("user").Exists)
{
client.CreateIndex("user", c => c.Mappings(
m => m.Map<User>(
mp => mp.AutoMap()
)
)
);
}在创建fluent映射(所以我可以实现这里正在做的事情)时,我试图找到指定分析器的正确位置,但是:-
mp.AutoMap().Analyzer()被标记为不推荐/要删除,并警告默认分析器将在类型级别被删除,并需要在索引或字段级别指定(sidenote: be,它们是指属性吗?)Analyzer()在Keyword()或Name()之后不可用难道通过流畅的映射就不可能做到这一点吗?这是否意味着我必须通过CreateIndex ->设置->分析指定可用的分析器,然后通过POCO上的属性指定要在属性级别上使用的分析器?
我觉得我在某个地方犯了根本的错误--任何建议都会受到极大的赞赏!
发布于 2017-08-07 11:07:35
事实证明,答案并不在于它是否流畅,但是您不能为关键字字段指定分析器,所以数据将按原样使用。
您可以看到关键字文档与文本字段的文档之间的区别。我对关键字数据类型的引用顶部的文本有一点误解:"A字段索引结构化内容,如电子邮件地址、主机名、状态代码、邮政编码或标签“。
我怀疑我想要做的是规范器的开发,但它仍然被标记为实验性的,但至少现在我可以使用文本。
c => c.Mappings(m => m.Map<User>(
mp => mp.AutoMap()
.Properties(p => p.Text(
t => t.Name(n => n.Postcode)
.Analyzer("my_analyzer")
)
)
)
)https://stackoverflow.com/questions/45545168
复制相似问题