我有一个文档索引。我想过滤公共文档或由我的组成员(用户1和3)共享给组的文档。
隐私="公共"或(1,3)中的隐私="组"和user_id)
我可以分开做,但是如何将它们与OR结合起来?
"filter" : [
{"terms" : { "privacy" : ["public"]}},
]
"filter" : [
{"terms" : { "privacy" : ["group"]}},
{"terms" : { "user_id" : [1,3]}},
]
文件:
正确的查询将返回文档 1、3、4、7、9,但不会返回 6。
诀窍是将两个子查询都包装在一个bool-should中:
{
"query": {
"bool": {
"should": [
{
"terms": { "privacy": [ "public" ] }
},
{
"bool": {
"filter": [
{
"terms": { "privacy": [ "group" ] }
},
{
"terms": { "user_id": [ 1, 3 ] }
}
]
}
}
]
}
}
}
仅供参考:注意必须
和过滤器
之间的区别。TL;DR filter
forgoes scoreing.
编辑:
{
"terms":{
"privacy":[
"public"
]
}
}
大致等同于(除了上面讨论的评分部分)
{
"bool":{
"filter":{
"terms":{
"privacy":[
"public"
]
}
}
}
}
这完全等同于
{
"bool":{
"filter":[
{
"terms":{
"privacy":[
"public"
]
}
}
]
}
}
这只是一个冗长的问题。
编辑2:包含2个过滤器的重写查询
{
"query": {
"bool": {
"should": [
{
"bool": {
"filter": [
{
"terms": { "privacy": [ "public" ] }
}
]
}
},
{
"bool": {
"filter": [
{
"terms": { "privacy": [ "group" ] }
},
{
"terms": { "user_id": [ 1, 3 ] }
}
]
}
}
]
}
}
}
问题内容: 我想对elasticsearch 进行过滤,但我不知道… 这是我发送给ES _search方法的内容。 但是我总是会收到这个错误: 而且,如果我删除该选项并仅对geo_distance进行过滤,则可以使用…任何帮助都将是极好的。 干杯 问题答案: 我认为您的过滤器写有误。该错误表明过滤器或多或少地在参数方面遇到问题。参见http://www.elasticsearch.org/guid
示例文档 索引定义 内部无源过滤的响应良好。 响应包含嵌套属性的所有属性。即开始时间、结束时间和文本行。如何在响应中仅返回endtime和startTime? 查询失败 错误HTTP/1.1 400错误请求内容类型:application/json;字符集=UTF-8内容长度:265 {"错误":{"root_cause":[{"type":"illegal_argument_exception"
我有一个本地索引表,如下所示。 如何进行类似startDate的查询 据我所知,要对结果进行排序,我需要使用InvoiceDateLocalIndex。但如果使用,则会出现错误“筛选器表达式只能包含非主键属性:主键属性:InvoiceDate”
问题内容: 我有一个Java对象列表,希望根据多个字段进行排序。 是否可以使用或接口根据多个字段对列表进行排序?我看到的所有示例仅根据一个领域进行排序。换句话说,可以按“校园”或“教师”或“建筑”进行排序。我想按“校园”,“教师”,“建筑”(因为它在SQL中存在)进行排序 问题答案: 您的比较器如下所示: 基本上,只要到目前为止已比较的属性相等(),它就会继续比较类的每个连续属性。
我的文档具有如下所示的嵌套字段: 嵌套字段的映射如下所示: 在切换到ElasticSearch2之前,我使用aggs查询了没有结果的文档。以下是查询的聚合部分: 现在我切换到了ElasticSerach2,它只计算所有文档。我已经尝试了不同的方法,比如计算所有文档和计算结果,这样我就可以减去结果,但是 总是0 如何正确筛选/计算嵌套字段?
问题内容: 我很难用Elasticsearch构建查询。 我想查询类似的东西: 所以我试图构造的是这样的: 但这似乎返回一个错误。 谁能给我一个指针,我应该如何看待用Elasticsearch进行这种OR查询? 我当前的数据已发送: 和我的查询: 返回此错误: 问题答案: 这是由于JSON格式错误所致。此查询的正确JSON格式如下-