[英]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.