如何使用 ElasticSearch 5.x 的 NEST 流畅映射指定索引/字段分析器?
How can I specify index / field analyzers using NEST fluent mapping for ElasticSearch 5.x?
对 ElasticSearch / NEST 相当陌生 - 我在包含英国邮政编码(例如 DT5 2HW、BB1 9DR)的映射上有一个 属性。目前,我有以下代码:-
if (!client.IndexExists("user").Exists)
{
client.CreateIndex("user", c => c.Mappings(
m => m.Map<User>(
mp => mp.AutoMap()
)
)
);
}
我试图在创建流畅映射时找到指定分析器的正确位置 (),但是:-
- 调用
mp.AutoMap().Analyzer()
被标记为已弃用/将在 6.0 中删除,并警告默认分析器将在类型级别删除,需要在索引或字段级别指定 (旁注:按字段,它们是指 属性 吗?)
在 Keyword()
或 Name()
之后,Analyzer()
在 Intellisense 中不可用
难道不能通过流畅的映射来做到这一点吗?这是否意味着我必须通过 CreateIndex -> 设置 -> 分析指定可用的分析器,然后指定要在 属性 级别上使用 POCO 属性的分析器?
我觉得我在某个地方出了根本性的错误 - 任何指点将不胜感激!
事实证明,答案与流利与否无关,但您不能为关键字字段指定分析器,因此数据将按原样使用。
你可以看到the documentation for keyword with the documentation for text fields之间的区别。我被关键字数据类型参考顶部的文本误导了 "A field to index structured content such as email addresses, hostnames, status codes, zip codes or tags"。
我怀疑我正在尝试做的是开发 Normalizers 的目的,但它仍被标记为实验性的,但至少我现在可以使用 Text。
c => c.Mappings(m => m.Map<User>(
mp => mp.AutoMap()
.Properties(p => p.Text(
t => t.Name(n => n.Postcode)
.Analyzer("my_analyzer")
)
)
)
)
对 ElasticSearch / NEST 相当陌生 - 我在包含英国邮政编码(例如 DT5 2HW、BB1 9DR)的映射上有一个 属性。目前,我有以下代码:-
if (!client.IndexExists("user").Exists)
{
client.CreateIndex("user", c => c.Mappings(
m => m.Map<User>(
mp => mp.AutoMap()
)
)
);
}
我试图在创建流畅映射时找到指定分析器的正确位置 (
- 调用
mp.AutoMap().Analyzer()
被标记为已弃用/将在 6.0 中删除,并警告默认分析器将在类型级别删除,需要在索引或字段级别指定 (旁注:按字段,它们是指 属性 吗?)
在 Analyzer()
在 Intellisense 中不可用
Keyword()
或 Name()
之后,难道不能通过流畅的映射来做到这一点吗?这是否意味着我必须通过 CreateIndex -> 设置 -> 分析指定可用的分析器,然后指定要在 属性 级别上使用 POCO 属性的分析器?
我觉得我在某个地方出了根本性的错误 - 任何指点将不胜感激!
事实证明,答案与流利与否无关,但您不能为关键字字段指定分析器,因此数据将按原样使用。
你可以看到the documentation for keyword with the documentation for text fields之间的区别。我被关键字数据类型参考顶部的文本误导了 "A field to index structured content such as email addresses, hostnames, status codes, zip codes or tags"。
我怀疑我正在尝试做的是开发 Normalizers 的目的,但它仍被标记为实验性的,但至少我现在可以使用 Text。
c => c.Mappings(m => m.Map<User>(
mp => mp.AutoMap()
.Properties(p => p.Text(
t => t.Name(n => n.Postcode)
.Analyzer("my_analyzer")
)
)
)
)