当前位置:  开发笔记 > 编程语言 > 正文

Elasticsarch C#Nest [5.x]属性

如何解决《ElasticsarchC#Nest[5.x]属性》经验,为你挑选了1个好方法。

我对ElasticSearch中的字段属性有点挣扎,特别是因为5.x(我正在移植我们的代码)的事情发生了一些变化.

一个例子是:

    [Text(Index = false)]
    public string Id                        { get; set; }
    [Keyword]
    public string Tags                      { get; set; }
    [Text]
    public string Title                     { get; set; }

我有很多这样的字段,但我正在尝试找出以下字段的最佳属性:

要搜索的文本字段,不进行解释(例如字符串ID).我希望能够搜索确切的字符串,没有别的

一个英文文本,我希望能够对单词和邻近区域进行全面搜索.

一个枚举,其中值可以存储为有限的字符串列表,我需要将其用作搜索条件

标签是一个单词列表但不形成句子; 我需要能够搜索这些内容

要存储且不可搜索的数字

要存储和搜索的日期

要存储但不可搜索的日期

很多帖子都引用了ES的文档,但我真的没有看到属性文档的任何清晰度; 它似乎是与那些已经理解了系统的人一起写的.如果有人有像属性及其影响(存储,搜索,分析等)细分的excelsheet那将是太棒了



1> Russ Cam..:

文档只会随着时间的推移而变得更好; 贡献最受赞赏 :)

回答你的问题:

要搜索的文本字段,不进行解释(例如字符串ID).我希望能够搜索确切的字符串,没有别的

使用KeywordAttribute,创建一个具有Keyword数据类型的字段.

一个英文文本,我希望能够对单词和邻近区域进行全面搜索.

使用TextAttribute,创建一个具有Text数据类型的字段.默认情况下,使用的分析仪将是Standard Analyzer.根据您的域和搜索条件,您可以使用其他分析器,可以是预配置的,也可以是自定义的.

一个枚举,其中值可以存储为有限的字符串列表,我需要将其用作搜索条件

KeywordAttribute如果您想要完全匹配,可以在这里使用.您可能希望不区分大小写地搜索,在这种情况下,您可以使用TextAttributeKeyword标记化器和Lowercase标记过滤器组成的自定义分析器.

标签是一个单词列表但不形成句子; 我需要能够搜索这些内容

如果您正在寻找非结构化搜索,那么请使用TextAttribute.

- 要存储且不可搜索的数字

使用NumberAttribute映射到数字数据类型,使用与POCO类型NumberType相对应的数据,numeric例如for Int32(int),use NumberType.Integer.对于要存储_source但不可搜索的数字,请设置Index=false例如

[Number(NumberType.Integer, Index = false)]
public int MyNumber { get;set; }

Index对应index于数字类型.

- 要存储和搜索的日期

使用DateAttribute与数据类型对应的Date

- 要存储但不可搜索的日期

使用DateAttributewithIndex=false

请查看字段映射可用的映射参数的文档.Elasticsearch文档中的参数名称在NEST中以Pascal为基础的名称公开.

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有