簡體   English   中英

字典項目的 ElasticSearch/NEST 索引策略

[英]ElasticSearch/NEST indexing policy for Dictionary items

我有一個文檔 model 包含字段,該字段是一個字典,可以采用任何值,如下所示:

public class Document
{
    public string Id { get; set; }

    public string Description { get; set; }

    public Dictionary<string, object> Permissions { get; set; }

    public Dictionary<string, object> Metadata { get; set; }
}

例如

client.IndexDocument(new Document
{
    Id = "4",
    Description = "ordinary document",
    Metadata = new Dictionary<string, object>
    {
        { "publish_date", new DateTime(1930, 10, 11) },
        { "author_country", "RU" },
        { "salary", 2590.00 },
        { "likes", 23 },
    }
})

映射是自動完成的,因此默認分析器會更改字典的值,例如:將字符串更改為小寫或刪除破折號,因此此代碼不會返回任何結果:

var result = client.Search<Document>(s => s
    .Query(q =>
        q.Term(new Field("metadata.author_country"), "RU"))
    );

如何為任何元數據值禁用此行為? 或者設置自定義分析器? 或者 - 僅對給定類型的值禁用它?

您應該將文檔字段的映射設置為正確的類型。 在此處查看更多信息: https://www.elastic.co/guide/en/elasticsearch/reference/7.10/mapping.html所有類型均在此處列出: Z5E056C500A1C4/76A7110BADEelastic。 elasticsearch/reference/7.10/mapping-types.html

要在 Nest 中執行此操作,您需要將正確的屬性添加到文檔定義中。

在此處查看詳細信息: https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/attribute-mapping.html

如果我了解您要執行的操作,則需要將元數據類型設置為嵌套,因為您要搜索元數據:

https://www.elastic.co/guide/en/elasticsearch/reference/current/nested.html

暫無
暫無

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

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