Я пытаюсь найти элементы, некоторые из которых могут быть приватными.
Если элемент является личным, его могут видеть только друзья владельца элемента (массив item.friends).Если это не личное, то все могут это увидеть.
Так что моя логика такова: если элемент не is_private
(is_private = 0) ИЛИ идентификатор пользователя (4в моем примере) находится в массиве item.friends
, пользователь может видеть элемент.
Тем не менее я не получаю никаких результатов.Каждый элемент теперь имеет значение is_private
= 1, так что я думаю, что-то не так с моим фильтром идентификаторов.
Есть предложения?
// ---- Mapping
{
"item": {
"properties": {
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"created": {
"type": "date"
},
"location": {
"properties": {
"location": {
"type": "geo_point"
}
}
},
"is_proaccount": {
"type": "integer"
},
"is_given_away": {
"type": "integer"
},
"is_private": {
"type": "integer"
},
"friends": {
"type": "integer",
"index_name": "friend"
}
}
}
}
// ----- Example insert
{
"name": "Test",
"description": "Test",
"created": "2012-02-20T12:21:30",
"location": {
"location": {
"lat": "59.919914",
"lon": "10.753414"
}
},
"is_proaccount": "0",
"is_given_away": "0",
"is_private": 1,
"friends": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10
]
}
// ----- Query
{
"from": 0,
"size": 30,
"filter": {
"or": [
{
"bool": {
"must": [
{
"term": {
"is_private": 0
}
}
]
}
},
{
"ids": {
"values": [
4
],
"type": "friends"
}
}
]
},
"query": {
"match_all": {}
}
}