使用elasticsearch的字母排序

时间:2017-06-04 11:57:39

标签: javascript sorting elasticsearch elastic-stack

如果有任何方式或设置在弹性搜索中执行字母排序,我会更加干净。我有一个字段,我想按降序对它进行排序。弹性按字典顺序执行。我得到了什么:

Company name
Customer name
company address

我想得到什么:

Company name
company address
Customer name

我发现我可以创建自定义分析器,但是可能有更好的选择吗?

1 个答案:

答案 0 :(得分:1)

使用multifields将文本字段索引为lowercased关键字,并将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"
      }
    }
  ]
}