【发布时间】:2019-10-09 17:18:42
【问题描述】:
我有一个包含多个关键字的查询,并汇总了作者 ID。
我希望排名基于结合必须和应该。
例如,对于查询“X”、“Y”,文档字段中同时包含“X”和“Y”的作者应该排名较高,其次是包含“X”或“Y”的作者。
执行它们中的每一个(AND/OR)都很容易,我需要如何在一个 ES 查询中实现两者的想法/方向。
我对 X 和 Y 的当前查询是:
GET /docs/_search
{
"size": 0,
"query": {
"bool": {
"must": [
{
"query_string": {
"query": "X",
"fields": [
"fulltext"
],
"default_operator": "AND"
}
},
{
"query_string": {
"query": "Y",
"fields": [
"fulltext"
],
"default_operator": "AND"
}
}
]
}
},
"aggs": {
"search-users": {
"terms": {
"field": "author.id.keyword",
"size": 200
},
"aggs": {
"top-docs": {
"top_hits": {
"size": 100
}
}
}
}
}
}
更改 must 应该将其更改为 OR,但我希望将两个排名作者的组合与 must 在聚合中排名更高。
【问题讨论】:
-
你绝对应该显示你当前的查询
-
我现在已经添加了。 @Val
标签: elasticsearch