elasticsearch中的匹配数组属性
Matching array property in elasticsearch
我有以下文档,在一个名为users
的索引中:
[
{
"name": "foo",
"preferences": [{"id":1, "name":"a"}, {"id": 2, "name":"b"}]
},
{
"name": "bar",
"preferences": [{"id":2, "name":"a"}, {"id": 3, "name":"c"}, {"id": 4, "name":"d"}]
}
]
和一个选择的id列表,例如var choosenPrefs=[2, 3]
,它匹配首选项的id属性。
现在,我想获得所有用户的首选项中至少有一个id。
我尝试了不同的查询,但没有得到它…
当前是这样的:
"query": {
"bool": {
"must": [
{"prefix": {"name": ""}},
{
"terms": {
"perferences.id": choosenPrefs
}
}
],
"filter": {
"geo_distance": {
"distance": "10km",
"location": position
}
}
}
}
我还使用了一个距离过滤器(它不需要首选项过滤/匹配)。
查询没有抛出任何错误,但是没有得到任何结果。
我希望有人能给点建议?!
PS:我使用的是最新的ES版本
您有一个错别字(perferences
而不是preferences
):
"query": {
"bool": {
"must": [
{"prefix": {"name": ""}},
{
"terms": {
"preferences.id": [2,3]
}
}
],
"filter": {
"geo_distance": {
"distance": "10km",
"location": position
}
}
}
}
相关文章:
- 如何筛选对象的数组属性
- 如何在mongodb(mongose)中覆盖子文档的数组属性
- 如何按对象数组中的数组属性进行筛选
- 基于其他属性查询多维数组属性
- 循环访问 JS 数组 + 数组属性
- AngularJS:观察数组属性
- JSON对象中的数组属性通过foreach更新-更新所有键
- Javascript - 使用数组属性定义对象
- Ember.js with EmberFire Object - 如何使用数组属性
- 我无法访问由开发人员工具中可见的回调填充的 javascript 对象数组属性内容
- 设置对象数据结构数组属性
- 按子数组属性/值对 JavaScript 对象数组进行排序
- 对象的数组属性
- 如何访问 JavaScript 对象上的数组属性
- 使用 jQuery 深层复制对象数组属性值
- 访问并迭代模板内Kendo UI Listview的数组属性
- 主干模型数组属性更改和更改事件侦听器不总是启动
- 在json数组属性中循环
- 通过js中的数组属性方法进行迭代
- 无法清除主干模型数组属性