以下查询查找包含所有单词的所有文档" look"," for"和"这个:
"query": {
"query_string": {
"query": "look for this",
"default_operator":"AND"
}
}
虽然这个人找到任何这三个词中的任何一个文件:
"query": {
"query_string": {
"query": "look for this",
"default_operator":"OR"
}
}
我的问题是如何更改查询以便执行Google样式搜索,即它首先列出所有包含所有条款的文档,然后列出包含其中任何条款的文档?
我将不胜感激。
答案 0 :(得分:1)
默认情况下,弹性搜索会为所有条款都存在的文档提供更高的分数。您可以使用explain api来查看。
如果你真的想在所有条款都存在的情况下给出非常高分的文件,那么你可以使用bool query
{
"query": {
"bool": {
"should": [
{
"query_string": {
"default_field": "title",
"query": "look for this",
"default_operator": "AND"
}
},
{
"query_string": {
"default_field": "title",
"query": "look for this"
}
}
]
}
}
}
编辑1
您可以使用fuction score query来提升所需结果。请尝试以下查询
{
"query": {
"function_score": {
"query": {
"bool": {
"should": [
{
"query_string": {
"fields": [
"title"
],
"query": "look for this",
"default_operator": "AND"
}
},
{
"query_string": {
"query": "look for this",
"fields": [
"title"
]
}
}
]
}
},
"functions": [
{
"filter": {
"query": {
"query_string": {
"fields": [
"title"
],
"query": "look for this",
"default_operator": "AND"
}
}
},
"weight": 10
}
]
}
}
}