使用 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的对象初始化语法