我有一个ElasticSearch字段ID
,它是一个数字,但在索引中设置为“文本”。我无法更改索引,因为要重新加载的数据量很大。我正在编写一个脚本来执行此排序,但得到一个“Bad_request”错误。
Script script = new Script(ScriptType.INLINE, "painless", "ctx._source.ID.keyword", Collections.emptyMap());
ScriptSortBuilder.ScriptSortType sortType = ScriptSortBuilder.ScriptSortType.NUMBER;
builder.sort(SortBuilders.scriptSort(script, sortType).order(SortOrder.DESC));
searchRequest.source(builder);
response = restsearchClient.search(searchRequest, RequestOptions.DEFAULT);
我已经尝试了以下idorcode值:一个月一个月一个月一个月,一个月二个月一个月,一个月三个月,一个月四个月。
请指教!
1条答案
按热度按时间rqmkfv5c1#
如果我的理解是正确的,那么你想排序的数字是作为字符串存储,而不是作为整数在ElasticSearch。
下面是示例Elasticsearch查询:
下面是Java代码: