【发布时间】:2015-05-07 09:47:50
【问题描述】:
我正在处理一个查询,基本的过滤多重匹配查询正在按计划工作,它返回我想要的文档。
问题是想要提升具有特定字符串字段的结果。 0.5,或者在这个例子中,给没有这个字段'traded_as'的结果一个1.0的负提升。
无法让过滤器 - 提升 - 必须 - 存在/缺少按我的意愿工作。
这是解决这个问题的正确方法吗?
使用弹性搜索 1.5.2
{
"query": {
"filtered": {
"query": {
"multi_match": {
"query": "something",
"fields": ["title", "url", "description"]
}
},
"filter": {
"bool": {
"must": {
"missing": {
"field": "marked_for_deletion"
}
}
}
}
}
},
"boosting": {
"positive": {
"filter": {
"bool": {
"must": {
"exists": {
"field": "traded_as"
}
}
}
}
},
"negative": {
"filter": {
"bool": {
"must": {
"missing": {
"field": "traded_as"
}
}
}
}
},
"negative_boost": 1.0
}
}
【问题讨论】:
-
您确定可以在同一级别进行查询和提升吗? { "查询": { }, "提升": { } }
-
我尝试了很多不同的方法,都没有成功。
-
negative_boost 应该小于 1,ES 会按该因子缩小分数。
标签: elasticsearch