ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
Elasticsearch exception \[type=illegal\_argument\_exception, reason=Text fields are not optimised for operations that require per-document field data like aggregations and sorting, so these operations are disabled by default. Please use a keyword field instead. Alternatively, set fielddata=true on \[companyName\] in order to load field data by uninverting the inverted index. Note that this can use significant memory.\] 因为 企业名称(companyName) 字段是text的, 默认无法做排序, springboot上 使用 @Field 设置 fielddata=true不起效, (6.x 使用这个设置不行, 7.x了也不行, 不知道要咋通过@Field设置) ![](https://img.kancloud.cn/63/09/63097be353e518b0c0ca0ffe9b46fc3a_866x122.png) 解决方法: 之前用6.x 的时候, 记得是用 命令去设置的, 但是这玩意占用内存大 ``` PUT 自己的索引/_mapping/ { "properties": { "字段名": { "type": "text", "fielddata": true } } } ``` 加上之后能分词, 能排序, 但是排序的不准, 因为已经被分词了 优化 再加个企业名称字段, keyword 类型, 专门用来排序, 这样就耗费硬盘罢了, **但是在使用时要加 .keyword, 格式是 字段名.keyword ,注意中间有个点** 大概结构: ``` "sort": [ { "companyNameSort.keyword": { "order": "asc" } } ] ```