如何在elasticsearch中对字符串进行排序
How to sort string in elasticsearch
我想获得按名称(字符串)排序的结果,这就是我所做的:
1.create 索引命名为元数据
放 http://IP:9200/元数据/
2.创建类型名称作为对象
POST http://ip:9200/metadata/objects
{
"mappings":{
"objects":{
"properties":{
"name":{
"type":"string",
"index": "not_analyzed"
},
"version":{
"type":"integer"
},
"size":{
"type":"integer"
},
"hash":{
"type":"string"
}
}
}
}
}
- 插入数据
POST http://ip:9200/metadata/objects/test3_1?op_type=create
{
"name":"test3",
"version":1,
"size":13,
"hash":"2oUvHeq7jQ27Va2y/usI1kSX4cETY9LuevZU9RT+Fuc="
}
- 获取按名称排序的结果
获取http://101.43.155.248:9200/metadata//_search?sort=name,version
错误是
文本字段未针对需要每个文档字段数据的操作(如聚合和排序)进行优化,因此默认情况下禁用这些操作。请改用关键字字段。或者,在 [name] 上设置 fielddata=true 以通过反转倒排索引来加载字段数据。请注意,这可能会占用大量内存
您需要为排序字段使用 .keyword
(如果它是动态创建的),或者将其他字段定义为需要排序的 .keyword
。
当您手动创建索引映射时,您需要在 name
字段上手动添加 .keyword
,在 price
上没有问题,因为它在数字字段上有效。
我想获得按名称(字符串)排序的结果,这就是我所做的:
1.create 索引命名为元数据 放 http://IP:9200/元数据/ 2.创建类型名称作为对象 POST http://ip:9200/metadata/objects
{
"mappings":{
"objects":{
"properties":{
"name":{
"type":"string",
"index": "not_analyzed"
},
"version":{
"type":"integer"
},
"size":{
"type":"integer"
},
"hash":{
"type":"string"
}
}
}
}
}
- 插入数据
POST http://ip:9200/metadata/objects/test3_1?op_type=create
{
"name":"test3",
"version":1,
"size":13,
"hash":"2oUvHeq7jQ27Va2y/usI1kSX4cETY9LuevZU9RT+Fuc="
}
- 获取按名称排序的结果
获取http://101.43.155.248:9200/metadata//_search?sort=name,version
错误是
文本字段未针对需要每个文档字段数据的操作(如聚合和排序)进行优化,因此默认情况下禁用这些操作。请改用关键字字段。或者,在 [name] 上设置 fielddata=true 以通过反转倒排索引来加载字段数据。请注意,这可能会占用大量内存
您需要为排序字段使用 .keyword
(如果它是动态创建的),或者将其他字段定义为需要排序的 .keyword
。
当您手动创建索引映射时,您需要在 name
字段上手动添加 .keyword
,在 price
上没有问题,因为它在数字字段上有效。