首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用NEST fluent映射为ElasticSearch 5.x指定索引/字段分析器?

如何使用NEST fluent映射为ElasticSearch 5.x指定索引/字段分析器?
EN

Stack Overflow用户
提问于 2017-08-07 10:53:24
回答 1查看 3K关注 0票数 2

对ElasticSearch / NEST来说是相当新的--我在地图上有一个存放英国邮政编码的属性(如DT5 2 2HW,BB1 9DR)。目前,我有以下代码:

代码语言:javascript
复制
if (!client.IndexExists("user").Exists)
{
    client.CreateIndex("user", c => c.Mappings(
                                        m => m.Map<User>(
                                              mp => mp.AutoMap()
                                        )
                                    )                                                                    
                      );
}

在创建fluent映射(所以我可以实现这里正在做的事情)时,我试图找到指定分析器的正确位置,但是:-

  • 在6.0中,调用mp.AutoMap().Analyzer()被标记为不推荐/要删除,并警告默认分析器将在类型级别被删除,并需要在索引或字段级别指定(sidenote: be,它们是指属性吗?)
  • 在智能感知中,Analyzer()Keyword()Name()之后不可用

难道通过流畅的映射就不可能做到这一点吗?这是否意味着我必须通过CreateIndex ->设置->分析指定可用的分析器,然后通过POCO上的属性指定要在属性级别上使用的分析器?

我觉得我在某个地方犯了根本的错误--任何建议都会受到极大的赞赏!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-07 11:07:35

事实证明,答案并不在于它是否流畅,但是您不能为关键字字段指定分析器,所以数据将按原样使用。

您可以看到关键字文档文本字段的文档之间的区别。我对关键字数据类型的引用顶部的文本有一点误解:"A字段索引结构化内容,如电子邮件地址、主机名、状态代码、邮政编码或标签“。

我怀疑我想要做的是规范器的开发,但它仍然被标记为实验性的,但至少现在我可以使用文本。

代码语言:javascript
复制
c => c.Mappings(m => m.Map<User>(
                    mp => mp.AutoMap()
                            .Properties(p => p.Text(
                                     t => t.Name(n => n.Postcode)
                                           .Analyzer("my_analyzer")
                                                   )
                                       )
                                )
)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45545168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档