sorting - ElasticSearch使用分数按字母顺序对查询进行排序

标签 sorting elasticsearch indexing

是否可以选择通过更改索引设置或映射来按字母顺序对查询进行排序?

我知道有一个“排序”查询,但是删除了分数,我希望除了该术语的字母排序之外,也要考虑分数。

例如,如果结果“A”和“Z”的得分为2,而“C”的得分为1,我希望顺序为:

一种

ž

C

这可能吗?

这是我当前的索引设置和映射:

{
   "users": {
      "settings": {
         "index": {
            "analysis": {
               "filter": {
                  "shingle_filter": {
                     "max_shingle_size": "2",
                     "min_shingle_size": "2",
                     "output_unigrams": "true",
                     "type": "shingle"
                  },
                  "edgeNGram_filter": {
                     "type": "nGram",
                     "min_gram": "1",
                     "max_gram": "20"
                  }
               },
               "analyzer": {
                  "autocomplete_query_analyzer": {
                     "filter": [
                        "standard",
                        "asciifolding",
                        "lowercase"
                     ],
                     "tokenizer": "standard"
                  },
                  "autocomplete_index_analyzer": {
                     "filter": [
                        "standard",
                        "asciifolding",
                        "lowercase",
                        "shingle_filter",
                        "edgeNGram_filter"
                     ],
                     "tokenizer": "standard"
                  }
               }
            },
            "number_of_shards": "1",
            "number_of_replicas": "1"
         }
      }
   }
}

{
   "users": {
      "mappings": {
         "data": {
            "properties": {
               "name": {
                  "type": "string",
                  "analyzer": "autocomplete_index_analyzer",
                  "search_analyzer": "autocomplete_query_analyzer"
               }
            }
         }
      }
   }
}

是否可以在索引设置中添加一些内容,以便自动按字母顺序对结果进行排序?

最佳答案

ElasticSearch文档中的example显示您应该能够按多个值进行排序,包括_score。尝试类似的方法:

"sort": [
    { "date":   { "order": "desc" }},
    { "_score": { "order": "desc" }}
]

我不确定您要对哪个字段进行排序,因此您需要根据需要调整上面的示例。

让我知道这是否适合您:)

关于sorting - ElasticSearch使用分数按字母顺序对查询进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39327396/

相关文章:

c - 使用选择排序对数组进行排序不起作用

javascript - 使用函数按字母顺序对字符串进行排序

apache-spark - 如何在ElasticSearch中创建索引并从流式查询推送数据?

mongodb - 优化后端搜索引擎的设计

elasticsearch - 在elasticsearch中,我试图删除所有完全匹配的项目,但它不起作用

Access 中的 Sqlite 链接表再次给出 #deleted 值

mysql - 在主键+外键上创建多重索引是否有性能优势?

postgresql - 如何让 date_part 查询命中索引?

python:按子列表中的项目对列表列表进行排序

sorting - 如何在SAS中不进行排序的情况下删除重复的记录\观察?