簡體   English   中英

Elasticsarch C#Nest [5.x]屬性

[英]Elasticsarch C# Nest [5.x] attributes

我對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,這將是太棒了

文檔只會隨着時間的推移而變得更好; 貢獻最受贊賞 :)

回答你的問題:

  • 要搜索的文本字段,不進行解釋(例如字符串ID)。 我希望能夠搜索確切的字符串,沒有別的

使用KeywordAttribute ,它創建一個具有Keyword數據類型的字段。

  • 一個英文文本,我希望能夠對單詞和鄰近區域進行全面搜索。

使用TextAttribute ,它創建一個Text數據類型的字段。 默認情況下,使用的分析儀將是Standard Analyzer 根據您的域和搜索條件,您可以使用其他分析器,可以是預配置的,也可以是自定義的。

  • 一個枚舉,其中值可以存儲為有限的字符串列表,我需要將其用作搜索條件

如果您想要完全匹配,可以在此處使用KeywordAttribute 您可能希望不區分大小寫搜索,在這種情況下,您可以將TextAttribute與自定義分析器一起使用,該分析器由Keyword標記器Lowercase標記過濾器組成

  • 標簽是一個單詞列表但不形成句子; 我需要能夠搜索這些內容

如果您正在尋找非結構化搜索,請使用TextAttribute

- 要存儲且不可搜索的數字

使用NumberAttribute映射到數字數據類型 ,具有NumberType對應於numeric類型的POCO例如Int32int ),使用NumberType.Integer 對於要存儲在_source但不能搜索的數字,請設置Index=false例如

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

Index對應於數字類型的index

- 要存儲和搜索的日期

使用與Date數據類型對應的DateAttribute

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

使用DateAttributeIndex=false

請查看字段映射可用的映射參數文檔 Elasticsearch文檔中的參數名稱在NEST中以Pascal為基礎的名稱公開。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM