Elasticsearch 6.2.3版本 string 类型字段 排序 报错 Fielddata is disabled on text fields by default
背景说明
最近在做一个 Elasticsearch 的分页查询,并且对查询结果按照特定字段进行排序的功能。
但是执行结果却报错,报错信息如下:
{
"error": {
"root_cause": [
{
"type": "illegal_argument_exception",
"reason": "Fielddata is disabled on text fields by default. Set fielddata=true on [state] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead."
}
],
"type": "search_phase_execution_exception",
"reason": "all shards failed",
"phase": "query",
"grouped": true,
"failed_shards": [
{
"shard": 0,
"index": "alarm",
"node": "hdLJanxRTbmF52eK6-FFgg",
"reason": {
"type": "illegal_argument_exception",
"reason": "Fielddata is disabled on text fields by default. Set fielddata=true on [state] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead."
}
}
]
},
"status": 400
}
原因分析
查询语句如下:
GET alarm/_search // index为 alarm
{
"query" : {
"bool" : {
"must" : [
{
"match_phrase" : {
"state" : {
"query" : "confirmed",
"slop" : 0,
"boost" : 1.0
}
}
}
],
"disable_coord" : false,
"adjust_pure_negative" : true,
"boost" : 1.0
}
},
"from": 1, // 分页,第几页开始
"size": 5, // 分页,每页显示多少条
"sort": { // 排序,按照 state 字段降序排序
"state": {
"order": "desc" }
}
}
测试分析:
1)去除排序语句,分页查询是OK的,问题出在了排序字段;
2)按照 integer 类型 或者 date 类型的字段排序都是OK的,但是 string 类型排序报错(示例中的state字段为 string 类型)
解决方案
其实在报错信息里已经提供了解决方案:
需要对 string类型的字段,单独设置加载到内存中,才能排序。
Set fielddata=true on [state] in order to load fielddata in memory by uninverting the inverted index.
具体设置操作如下:
PUT alarm/_mapping/alarmInfoHistory/
{
"properties":{
"state":{
"type":"text",
"fielddata":true
}
}
}
执行结果:
{
"acknowledged": true
}
再次执行排序查询查询语句,就OK了。
Good Luck~
PS:
如果想按照多个字段排序(按照 state 和 alarmGrade 降序排序),SQL参考如下:
{
"query":{
"bool":{
"must":[
{
"match_phrase":{
"state":{
"query":"confirmed",
"slop":0,
"boost":1
}
}
}
],
"disable_coord":false,
"adjust_pure_negative":true,
"boost":1
}
},
"from":1,
"size":10,
"sort":[
{
"state":{
"order":"desc"
}
},
{
"alarmGrade":{
"order":"desc"
}
}
]
}
Elasticsearch 6.2.3版本 string 类型字段 排序 报错 Fielddata is disabled on text fields by default的更多相关文章
- Elasticsearch 6.2.3版本 执行聚合报错 Fielddata is disabled on text fields by default
背景说明 执行<Elasticsearch 权威指南>的示例,在执行聚合查询的时候,报错 Fielddata is disabled on text fields by default. ...
- ES使用text类型字段排序报错
elasticsearch text字段排序报错解决使用elasticsearch 进行排序的时候,我们一般都会排序数字.日期.但是在排序text类型的时候就会出现错误. GET xytest/sut ...
- elasticsearch报Fielddata is disabled on text fields by default
我刚玩elk没几天,今天启动kibana之后执行查询看见elasticsearch报了一个错误 Caused by: java.lang.IllegalArgumentException: Field ...
- Elasticsearch 报错:Fielddata is disabled on text fields by default. Set `fielddata=true` on [`your_field_name`] in order to load fielddata in memory by uninverting the inverted index.
Elasticsearch 报错: Fielddata is disabled on text fields by default. Set `fielddata=true` on [`your_fi ...
- linq中将int类型转换为string类型,toString()报错
今天同事在调试程序的时候,报了一个不寻常的错误, “LINQ to Entities 不识别方法"System.String ToString()",因此该方法无法转换为存储表达式 ...
- Elasticsearch 6.2.3版本 同一个index新增type报错 Rejecting mapping update to [website] as the final mapping would have more than 1 type: [blog2, blog]
在website的index下已经存在一个名为blog的type.想在website下,新增一个名为blog2的type. 执行语句如下: PUT /website/blog2/1 { "t ...
- mysql语句中把string类型字段转datetime类型
mysql语句中把string类型字段转datetime类型 在mysql里面利用str_to_date()把字符串转换为日期 此处以表h_hotelcontext的Start_time和En ...
- MySQL 表与字段编码格式报错
MySQL 表与字段编码格式报错 一.数据库,表,字段编码格式都为latin1(iso-8859-1) .当数据保存到数据库后,中文显示乱码. 解决办法: 1.在访问数据库连接串中添加编码格式: &l ...
- 单元测试时候使用[ClassInitialize]会该方法必须是静态的公共方法,不返回值并且应采用一个TestContext类型的参数报错的解决办法
using Microsoft.VisualStudio.TestTools.UnitTesting; 如果该DLL应用的是 C:\Program Files\Microsoft Visual Stu ...
随机推荐
- Systemctl和service、chkconfig命令的关系
systemctl命令:是一个systemd工具,主要负责控制systemd系统和服务管理器. service命令:可以启动.停止.重新启动和关闭系统服务,还可以显示所有系统服务的当前状态. ch ...
- XP系统登录界面,需要手动点击用户帐户后才会出现输入密码的界面
问题描述XP系统,用户帐户设置有密码.用户表示之前启动到系统登录界面,会直接出现输入密码的对话框(见图一):现在启动到登录界面只看到用户帐户信息,需手动点击用户名后才能出现输入密码的界面,用户感觉不方 ...
- 清北学堂提高组突破营游记day3
讲课人更换成dms. 真的今天快把我们逼疯了.. 今天主攻数据结构, 基本上看完我博客能理解个大概把, 1.LCA 安利之前个人博客链接.之前自己学过QWQ. 2.st表.同上. 3.字符串哈希.同上 ...
- UVALive - 5695 The Last Puzzle (思维+区间dp)
题目链接 题目大意:有n个按钮排成一条直线,你的任务是通过左右移动按下所有按钮,按钮如果一段时间没有被按下就会被弹开. 以下是我的推论(不一定正确): 直观地看的话,如果选择的是最优路径,那么路径的形 ...
- Test测试方法
Junit 注解 解释 @Before 在每个测试方法运行前执行的方法 @After 在每个测试方法运行后执行的方法 @BeforeClass 在类中所有测试运行之前运行的方法 @AfterClass ...
- 使用 mybatis-Generator 自动生成DAO、Model、Mapping相关文件
1.Maven项目 2.配置generatorConfig.xml文件 3.在pom.xml中配置插件 2.generatorConfig.xml文件信息 <?xml version=" ...
- 有时间看看这个方法 会不会 避免 xss
Server.HtmlEncode 能将字符串原样输出 包括html标签
- BAT批处理设置Shift右键cmd菜单
Windows Registry Editor Version 5.00 [-HKEY_CLASSES_ROOT\Directory\shell\runas] [HKEY_CLASSES_ROOT\D ...
- ASP.NET大文件上传断点续传解决方案
HTML部分 <%@PageLanguage="C#"AutoEventWireup="true"CodeBehind="index.aspx. ...
- 网页“console”输出图文信息
http://www.monmonkey.com/javascript/jiben2.html 参考以上链接中的转义字符使用. http://www.cnblogs.com/Wayou/p/chrom ...