在elasticsearch中查询时,如果字符串字符小于9,则在字符串字符后追加前导“0”,而不编写脚本

tcomlyy6  于 2022-11-22  发布在  ElasticSearch
关注(0)|答案(1)|浏览(150)

我遇到了字符串不能按数字排序的问题。例如,10〈8而不是8〈10,我目前不能将字符串转换为整数,因为字符串的其他部分是文字字符串。
如果数字小于10,我希望在前面附加一个0。如果不使用脚本,我如何实现这一点?

f4t66c6m

f4t66c6m1#

我会建议使用下面的查询与排序有脚本。这将是最好的工作相比,追加前导0的值。
您可以将ID.keyword替换为字段名称。

{
  "query": {
    "match_all": {}
  },
  "sort": {
    "_script": {
      "type": "Number",
      "order": "desc",
      "script": {
        "lang": "painless",
        "source": "Long.parseLong(doc['ID.keyword'].value)"
      }
    }
  }
}

如果您有整数值,则也可以使用Integer.parseInt(doc['ID.keyword'].value)

相关问题