elasticsearch,Sorting,elasticsearch" /> elasticsearch,Sorting,elasticsearch" />

Sorting Elasticsearch:如何对查询字符串查询的结果进行排序?

Sorting Elasticsearch:如何对查询字符串查询的结果进行排序?,sorting,elasticsearch,Sorting,elasticsearch,我使用Elasticsearch搜索日语文档,并结合多个字段(形态学分析+N-Gram)进行查询 查询如下: { "query":{ "bool":{ "must":{ "query_string":{ "query":"QUERY_KEYWORD", "fields":[ "title", "description",

我使用Elasticsearch搜索日语文档,并结合多个字段(形态学分析+N-Gram)进行查询

查询如下:

{  
  "query":{  
    "bool":{  
      "must":{  
        "query_string":{  
          "query":"QUERY_KEYWORD",
          "fields":[  
            "title",
            "description",
            "content",
            "content.ngram^3"
          ]
        }
      },
      "should":[  
        [  
          {  
            "range":{  
              "created":{  
                "boost":"5",
                "gte":"now-1M"
              }
            }
          }
        ]
      ]
    }
  }
  "sort":{
      "view_count": {"order": "desc"}
  }
}
返回索引中按
view\u count
排序的每个文档(忽略
query\u string
中的分数),这不是我想要的

多级排序也不起作用:

"sort": [
        { "view_count":   { "order": "desc" }},
        { "_score": { "order": "desc" }}
]
返回与上面的查询相同的值,并且

"sort": [
        { "_score": { "order": "desc" }},
        { "view_count":   { "order": "desc" }}
]
根本不排序(我怀疑
view\u count
只是作为
\u score
的制表符)

问题是:如何获得匹配
QUERY\u关键字
的文档,并按
view\u count
排序


提前感谢。

排序优先于按分数排序。在您的例子中,我认为您必须查看函数分数查询。特别是字段值因子


这样,浏览量会根据浏览量影响分数。

谢谢。我的理解是,函数分数查询对另一个查询有效吗?我意识到
query\u string
query本身会返回索引中的每个文档,因此可能不可能得到一个好的排序结果。嗯,不确定你的意思,如果你没有为query\u string查询提供查询参数,那么它等于match\u all查询。但是,如果您实际上正在查找一个单词,那么查询字符串查询将不会返回所有文档。