Elasticsearch NEST 查询嵌套对象
Elasticsearch NEST query nested object
我想从名为 "userprofiles" 的索引中的文档中检索嵌套对象。
我的 UserProfile 模型:
public class UserProfileModel
{
public string FullName { get; set; }
public string Oid { get; set; }
public string Upn { get; set; }
public List<SsoLink> FavoriteSsoLinks { get; set; } = new List<SsoLink>();
}
我的 SsoLink 模型:
public class SsoLink
{
public string Id { get; set; }
public string Name { get; set; }
public string Url { get; set; }
public string Owner { get; set; }
}
索引创建:
PUT userprofiles
{
"mappings" : {
"properties" : {
"FavoriteSsoLinks" : {
"type" : "object"
}
}
}
}
我的查询:
var searchResponse = _client.Search<UserProfileModel>(s => s
.Index(_profileIndex)
.Query(q=>q
.Term(t => t.Field(t => t.Oid).Value(oid)
)
)
);
现在它 returns 文档,但是 favoritelinks 对象是空白的,但是我看到从 Kibana 列出的对象。我一定是遗漏了一些明显的东西,但很难弄清楚。
这是我的数据示例:
索引创建示例使用 "FavoriteSsoLinks"
作为 属性,但 Kibana 屏幕截图使用 "favoriteSsoLinks"
以小写 f
开头 - 哪个正确?我怀疑 属性 大小写可能是问题所在,但需要查看索引中的映射才能知道这是否正确。
7.x 客户端在 JSON 中严格限制 属性 名称大小写,默认情况下使用驼峰 属性 名称来匹配 POCO 属性 名称.例如默认
JSON 中的 "favoriteSsoLinks"
将 与 FavoriteSsoLinks
POCO 属性 匹配
"FavoriteSsoLinks"
in JSON 将 与 FavoriteSsoLinks
POCO 属性 不匹配
此行为可以在 ConnectionSettings
上使用 DefaultFieldNameInferrer(Func<string, string>)
更改所有属性,或者在 属性 基础上 属性 使用 [=19] 等属性的属性=] 或 PropertyNameAttribute
,或使用 DefaultMappingFor<T>
,其中 T
是 POCO 类型。
我想从名为 "userprofiles" 的索引中的文档中检索嵌套对象。
我的 UserProfile 模型:
public class UserProfileModel
{
public string FullName { get; set; }
public string Oid { get; set; }
public string Upn { get; set; }
public List<SsoLink> FavoriteSsoLinks { get; set; } = new List<SsoLink>();
}
我的 SsoLink 模型:
public class SsoLink
{
public string Id { get; set; }
public string Name { get; set; }
public string Url { get; set; }
public string Owner { get; set; }
}
索引创建:
PUT userprofiles
{
"mappings" : {
"properties" : {
"FavoriteSsoLinks" : {
"type" : "object"
}
}
}
}
我的查询:
var searchResponse = _client.Search<UserProfileModel>(s => s
.Index(_profileIndex)
.Query(q=>q
.Term(t => t.Field(t => t.Oid).Value(oid)
)
)
);
现在它 returns 文档,但是 favoritelinks 对象是空白的,但是我看到从 Kibana 列出的对象。我一定是遗漏了一些明显的东西,但很难弄清楚。
这是我的数据示例:
索引创建示例使用 "FavoriteSsoLinks"
作为 属性,但 Kibana 屏幕截图使用 "favoriteSsoLinks"
以小写 f
开头 - 哪个正确?我怀疑 属性 大小写可能是问题所在,但需要查看索引中的映射才能知道这是否正确。
7.x 客户端在 JSON 中严格限制 属性 名称大小写,默认情况下使用驼峰 属性 名称来匹配 POCO 属性 名称.例如默认
-
JSON 中的
"favoriteSsoLinks"
将 与FavoriteSsoLinks
POCO 属性 匹配
"FavoriteSsoLinks"
in JSON 将 与FavoriteSsoLinks
POCO 属性 不匹配
此行为可以在 ConnectionSettings
上使用 DefaultFieldNameInferrer(Func<string, string>)
更改所有属性,或者在 属性 基础上 属性 使用 [=19] 等属性的属性=] 或 PropertyNameAttribute
,或使用 DefaultMappingFor<T>
,其中 T
是 POCO 类型。