我有2个部分的查询 (一个问题 (b)背景, 我想对弹性搜索进行查询,它给出了(a)的结果,这是强制性的,并且应该提高(b)的结果。
例如,如果查询/(a)是"通货膨胀率"和背景/(b)是"美国" - 结果应该只给出"通货膨胀率"和"美国"的结果应该得到提升。
我尝试了各种弹性搜索的概念,比如 - bool / should / filter /,但结果并没有像预期的那样。 下面我给出了我目前使用的查询模板。它给出了查询和上下文没有组合的结果,它只提供了匹配查询或上下文的文档。 我使用的是ES 2.4.0
function myFunction() {
var str = 12.234556;
str = str.toString().split('.');
var res = str[1].slice(0, 2);
document.getElementById("demo").innerHTML = str[0]+'.'+res;
}
// output: 12.23
答案 0 :(得分:0)
应该是这样的:
例如
{
"query": {
"function_score": {
"filter": {
"bool": {
"must": [{ //here can be should, must etc ... This is your first condition.
"match": {
"attributes.definition": {
"query": "inflation rate",
"boost": 5
}
}
}, {
"match": {
"attributes.topics.name": {
"query": "inflation rate",
"boost": 7
}
}
}]
}
},
"functions": [{ //This is your second condition. Just to give more relevance to the topics with United States.
"filter": {
"term": {
"attributes.topics.name": "United States"
}
},
"weight": 3
}, {
"field_value_factor": {
"field": "views",
"modifier": "log1p"
}
}],
"score_mode": "sum"
}
}
}
只是一个例子,根据您自己的要求进行调整。