匹配elasticsearch中的数组属性

时间:2016-11-03 12:01:52

标签: javascript json 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版本

1 个答案:

答案 0 :(得分:0)

你有一个拼写错误(from django.db.models import F Item.objects\ .annotate(latest_inventoryentry_id=Max('inventoryentry__created'))\ .filter( inventoryentry__id=F('latest_inventoryentry_id'), inventoryentry__receipt=None ) 而不是perferences):

preferences