【发布时间】:2016-09-29 09:41:37
【问题描述】:
我在 ElasticSearch 中有以下对象结构:
{
_id: 1,
myObj: {
myCol: [{id: 1, name:"1"}, {id: 2, name:"2"}, {id: 3, name:"3"}]
}
},
{
_id: 2,
myObj: {
myCol: [{id: 2, name:"2"}, {id: 3, name:"3"}, {id: 4, name:"4"}]
}
},
我正在使用 C# NEST 库来创建查询。我想使用标识符集合搜索 myCol 对象集合。
示例 #1: 搜索请求:标识符 [2, 3] 结果:两个对象都返回了
示例 #2: 搜索请求:标识符:[1] 结果:返回第一个对象
示例 #3: 搜索请求:标识符:[1, 2, 3, 4] 结果:没有对象返回
我正在尝试做的是一个查询“包含所有”。
请注意:
- C# NEST MultiMatchQuery 类型不支持整数数组(仅支持字符串。太糟糕了)。所以请不要让我使用这种类型的查询
- 我正在使用 Object Initializer 查询语法
- ElasticSearch 语法中的正确查询就足够了。
【问题讨论】:
-
如果我理解正确,你应该不需要任何特别的东西 - 只需在
myObj.myCol.id上使用多个Must子句的布尔查询 - lucene 中的集合被展平,所以你实际拥有的是有效地复制密钥,例如myObj.myCol.id = 1 && myObj.myCol.id = 2 ... -
你能在 Elastic 中创建一个这个查询的例子吗?
标签: c# elasticsearch kibana nest sense