gpt4 book ai didi

elasticsearch - Elasticsearch - 使用 bool 值和 id 进行或过滤

转载 作者:行者123 更新时间:2023-12-02 22:17:54 26 4
gpt4 key购买 nike

我正在尝试搜索项目,其中一些可能是私有(private)的。

如果项目是私有(private)的,则只有项目所有者的 friend (数组 item.friends)可以看到该项目。
如果它不是私有(private)的,每个人都可以看到它。

所以我的逻辑是:
如果项目是 不是 is_private (is_private=0) 用户 ID(在我的示例中为 4)在数组 item.friends 中,用户可以看到该项目。

我仍然没有得到任何结果。现在每个项目都设置为 is_private =1,所以我猜我的 ids 过滤器有问题。

有什么建议么?

// ---- 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": {}
}
}

最佳答案

“ids”过滤器可能并不像您认为的那样:它过滤文件 ID(以及,可选地,在文档类型上。)

http://www.elasticsearch.org/guide/reference/query-dsl/ids-filter.html

关于elasticsearch - Elasticsearch - 使用 bool 值和 id 进行或过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9391308/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com