es 指定排序字段_ES使用text类型字段排序报错

elasticsearch text字段排序报错解决

使用elasticsearch 进行排序的时候,我们一般都会排序数字、日期。但是在排序text类型的时候就会出现错误。

GET xytest/sutdent/_search

{

"sort":[

{"region": {"order": "asc"}}

]

, "from": 0

, "size": 2

}

结果如下:

{

"error": {

"root_cause": [

{

"type": "illegal_argument_exception",

"reason": "Fielddata is disabled on text fields by default. Set fielddata=true on [region] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory."

}

],

"type": "search_phase_execution_exception",

"reason": "all shards failed",

"phase": "query",

"grouped": true,

"failed_shards": [

{

"shard": 0,

"index": "xytest",

"node": "6h-7wPJmQqWGfz6nbgqjjQ",

"reason": {

"type": "illegal_argument_exception",

"reason": "Fielddata is disabled on text fields by default. Set fielddata=true on [region] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory."

}

}

],

"caused_by": {

"type": "illegal_argument_exception",

"reason": "Fielddata is disabled on text fields by default. Set fielddata=true on [region] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory."

}

},

"status": 400

}

主要原因是:"Fielddata is disabled on text fields by default. Set fielddata=true on [region] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory."

参考官方文档:

https://www.elastic.co/guide/en/elasticsearch/reference/current/fielddata.html

方案一:我们可以用region.keyword进行聚合,排序。用region用来查询。那么我们对我们的查询进行修改

GET xytest/sutdent/_search

{

"sort":[

{"region.keyword": {"order": "asc"}}

]

, "from": 0

, "size": 2

}

修改后查询结果:

{

"took": 1,

"timed_out": false,

"_shards": {

"total": 5,

"successful": 5,

"failed": 0

},

"hits": {

"total": 6,

"max_score": null,

"hits": [

{

"_index": "xytest",

"_type": "sutdent",

"_id": "6",

"_score": null,

"_source": {

"sid": "00006",

"name": "牧琢杭",

"age": "26",

"region": "广东省 湛江市 赤坎区",

"grade": [

{

"数学": 80

},

{

"语文": 63

},

{

"英语": 90

}

]

},

"sort": [

"广东省 湛江市 赤坎区"

]

},

{

"_index": "xytest",

"_type": "sutdent",

"_id": "5",

"_score": null,

"_source": {

"sid": "00005",

"name": "范旭",

"age": "30",

"region": "新疆维吾尔自治区 和田地区 和田县",

"grade": [

{

"数学": 90

},

{

"语文": 69

},

{

"英语": 60

}

]

},

"sort": [

"新疆维吾尔自治区 和田地区 和田县"

]

}

]

}

}

方案二:这是region这个排序字段的fileddata为true。

PUT xytest/_mapping/sutdent

{

"properties": {

"region":{

"type": "text",

"fielddata": true

}

}

}

设置结果:

{

"acknowledged": true

}

我们再次运行最开始的查询:

GET xytest/sutdent/_search

{

"sort":[

{"region": {"order": "asc"}}

]

, "from": 0

, "size": 2

}

返回结果:

{

"took": 130,

"timed_out": false,

"_shards": {

"total": 5,

"successful": 5,

"failed": 0

},

"hits": {

"total": 6,

"max_score": null,

"hits": [

{

"_index": "xytest",

"_type": "sutdent",

"_id": "6",

"_score": null,

"_source": {

"sid": "00006",

"name": "牧琢杭",

"age": "26",

"region": "广东省 湛江市 赤坎区",

"grade": [

{

"数学": 80

},

{

"语文": 63

},

{

"英语": 90

}

]

},

"sort": [

"东"

]

},

{

"_index": "xytest",

"_type": "sutdent",

"_id": "4",

"_score": null,

"_source": {

"sid": "00004",

"name": "符龙",

"age": "37",

"region": "河北省 保定市 清苑县",

"grade": [

{

"数学": 80

},

{

"语文": 79

},

{

"英语": 69

}

]

},

"sort": [

"保"

]

}

]

}

}

ElasticSearch 6.2 Mapping参数说明及text类型字段聚合查询配置

背景: 由于本人使用的是6.0以上的版本es,在使用发现很多中文博客对于mapping参数的说明已过时.ES6.0以后有很多参数变化. 现我根据官网总结mapping最新的参数,希望能对大家有用处. ...

Sql 中text类型字段判断是否为空

用 len关键字,字段=''会报错:数据类型 text 和 varchar 在 equal to 运算符中不兼容. 正确方法: 1. 字段 is null 2. datalength(字段)=0 注: ...

[转]sql中判断text类型字段是否为空

用 字段=''会报错:数据类型 text 和 varchar 在 equal to 运算符中不兼容. 正确方法: 1. 字段 is null 2. datalength(字段)=0 注:SQL中的DA ...

MSSQL数据库中Text类型字段在PHP中被截断之解 (转)

在PHP中使用了MSSQL数据库,恰巧数据库中又使用了Text类型字段,于是问题产生了.每次从数据库中查询得到的数据总是被莫名的截断,一开始是以为我使用的PHP框架中对字符串的长度有所限制,后来发现这 ...

MySQL 表与字段编码格式报错

MySQL 表与字段编码格式报错 一.数据库,表,字段编码格式都为latin1(iso-8859-1) .当数据保存到数据库后,中文显示乱码. 解决办法: 1.在访问数据库连接串中添加编码格式: &l ...

单元测试时候使用[ClassInitialize]会该方法必须是静态的公共方法,不返回值并且应采用一个TestContext类型的参数报错的解决办法

using Microsoft.VisualStudio.TestTools.UnitTesting; 如果该DLL应用的是 C:\Program Files\Microsoft Visual Stu ...

DB2读取CLOB字段-was报错:操作无效:已关闭 Lob。 ERRORCODE=-4470, SQLSTATE=null

DB2读取CLOB字段-was报错:操作无效:已关闭 Lob. ERRORCODE=-4470, SQLSTATE=null 解决方法,在WAS中要用的数据源里面配置连个定制属性: progressi ...

使用like查询text类型字段

使用like查询text类型字段 public bool Exists(GetReadType GRT, ClientMessageGetRead TypeID, string MessageID, ...

随机推荐

Nexus Repository Manager OSS 代理 p2 源

用maven管理构建Eclipse RCP项目时,可能会用到p2源: http://download.eclipse.org/releases/mars/ 内网用户肯定希望能通过nexus服务器代理, ...

【CITE】5个最优秀的Java和C#代码转换工具

毋庸置疑,Java是一门最受欢迎而且使用最广泛的编程语言,目前有超过9百万的Java开发者从事web服务的开发,Java以“编写一次,可在任何地方运行”而著称,同时这也是其大受欢迎的主要原因. 和Ja ...

最新Node.js 资源汇总

Node.js 资源汇总 文档 Node.js 官方文档:http://nodejs.org/api/ Node.js 中文文档:http://nodejs.jsbin.cn/api/ Express ...

去除右键的opendgl

Windows Registry Editor Version 5.00[-HKEY_CLASSES_ROOT\Unknown\shell\opendlg][-HKEY_CLASSES_ROOT\Un ...

ossfs 使用挂在到ecs -centos 6.8

# 帮助文档 ```oss 的所有文档都在这个链接上https://promotion.aliyun.com/ntms/act/ossdoclist.html?spm=5176.7933691.744 ...

html-背景图片

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值