首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ElasticSearch查询字符串查询default_operator

ElasticSearch查询字符串查询default_operator
EN

Stack Overflow用户
提问于 2016-10-11 01:47:30
回答 1查看 722关注 0票数 0

下面的查询查找所有包含所有单词“查找”、"for“和”this“的文档:

代码语言:javascript
运行
复制
"query": {
            "query_string": {
                "query": "look for this",
                "default_operator":"AND"
          }
        }

当这个人发现有这三个词中的任何一个的文件时:

代码语言:javascript
运行
复制
"query": {
            "query_string": {
                "query": "look for this",
                "default_operator":"OR"
          }
        }

我的问题是如何更改查询,以便执行Google样式的搜索,即它首先列出所有具有所有条件的文档,然后列出有这些条件的文档?

我很感谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-11 02:59:23

在默认情况下,Elasticsearch会给所有条款都存在的文档以更高的分数。您可以使用解释api来查看这一点。

如果您真的想在所有条款都存在的情况下给文档以很高的分数,那么您可以使用bool查询

代码语言:javascript
运行
复制
{
  "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

您可以使用功能评分查询来给期望的结果以很高的提升。尝试以下查询

代码语言:javascript
运行
复制
{
  "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
        }
      ]
    }
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39969311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档