javascript - 使用elasticsearch按字母顺序排序

标签 javascript sorting elasticsearch elastic-stack

我想知道是否有任何方法或设置可以在elasticsearch中执行字母顺序排序。我有一个字段,我想对其进行降序排序。 Elastic 按字典顺序执行它。我得到什么:

Company name
Customer name
company address

我想要得到什么:

Company name
company address
Customer name

我发现我可以创建一个自定义分析器,但也许还有更好的选择?

最佳答案

使用multifields将文本字段索引为小写关键字,并使用 fielddata true 进行排序。

{
  "settings": {
    "analysis": {
      "analyzer": {
        "keyword_lowercase": {
          "tokenizer": "keyword",
          "filter": ["lowercase"]
        }
      }
    }
  },
  "mappings": {
    "my_type": {
      "properties": {
        "text": { 
          "type": "text",
          "fields": {
            "raw": { 
              "type":     "text",
              "analyzer": "keyword_lowercase",
              "fielddata": true
            }
          }
        }
      }
    }
  }
}

查询

{
  "sort": [
    {
      "text.raw": {
        "order": "asc"
      }
    }
  ]
}

关于javascript - 使用elasticsearch按字母顺序排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44353815/

相关文章:

javascript - 使用 AJAX 在 elasticsearch 中查询动态聚合

javascript - Service Worker 更新,但旧文件仍被缓存

javascript - 使用 Jquery 从 <tr> 元素获取源代码

java - 是否可以强制 Map 以一种方式排序,但以另一种方式获取值?

algorithm - 对具有修改成本的数字列表进行排序

search - Elasticsearch 从搜索的响应正文中删除默认字段

elasticsearch - 如何使用 ElasticSearch 在字符串字段中搜索精确短语?

javascript - 如何在 JavaScript 中按值过滤字典?

javascript - 在 Javascript 中将字符串转换为函数

java - Hibernate 搜索 4.4.2 按日期排序不起作用