使用 Nest 的 ElasticSearch 查询 - 将字段匹配到几个选项之一
ElasticSearch query using Nest - Match Field to one of a few options
我有一个带有关键字“user_id”字段的弹性索引。
我想获取一组用户的所有文档。
{
...,
"user_id": "031aeda2-b552-4a16-9ae6-68a24492e252",
...,
}
我想获取属于一个或多个 user_id 的文档,即 - 获取具有 user_id 的文档:
“031aeda2-b552-4a16-9ae6-68a24492e252”
或者
“031fffa2-c552-4a16-9ae6-68a24492e141”
或者
...
如何在 Nest 上进行?
由于标准分析器提供基于语法的标记化,它会在 hypen 上拆分您的文本,因此请在关键字字段上使用
Nest 有两种语法
Fluent 和对象初始化程序
使用上面的流利语法可以使用Terms查询来解决。
_elasticClient
.Search<Users>(s => s
.From(0).Size(10)
.Query(q => q.Terms(p => p.Field(c => c.user_id.Suffix("keyword"))
.Terms(new List<string> { "1" }))));
*用您的模型替换用户。
如果需要动态创建查询,可以使用NEST的对象初始化语法
我有一个带有关键字“user_id”字段的弹性索引。 我想获取一组用户的所有文档。
{
...,
"user_id": "031aeda2-b552-4a16-9ae6-68a24492e252",
...,
}
我想获取属于一个或多个 user_id 的文档,即 - 获取具有 user_id 的文档: “031aeda2-b552-4a16-9ae6-68a24492e252” 或者 “031fffa2-c552-4a16-9ae6-68a24492e141” 或者 ...
如何在 Nest 上进行?
由于标准分析器提供基于语法的标记化,它会在 hypen 上拆分您的文本,因此请在关键字字段上使用
Nest 有两种语法
Fluent 和对象初始化程序
使用上面的流利语法可以使用Terms查询来解决。
_elasticClient
.Search<Users>(s => s
.From(0).Size(10)
.Query(q => q.Terms(p => p.Field(c => c.user_id.Suffix("keyword"))
.Terms(new List<string> { "1" }))));
*用您的模型替换用户。
如果需要动态创建查询,可以使用NEST的对象初始化语法