elasticsearch小记之--sort的type
2016-03-06 02:52
501 查看
我们知道在数据库中sort一个字符串和一个数字,会得到不同的结果,例如下面一组数字,他们的类型是string
1,3,5,33,24,6
上面的数字如果用倒序的话,结果会是 6,5,33,3,24,1 。大家发现没有,如果是string 类型,他是不会按照数字类型中的大小进行排序的,他是按照首先比较第一个字符的大小,然后比较第二个字符的大小,依次下来的,所以就得到了上面的结果。那如果是数字类型呢?那结果我想大家应该都知道,是 1,3,5,6,24,33 。会按照自然数的顺序。
那么在进入正题,在elasticsearch 里面sort其实也是这样的,我们来看看下面的例子
{
“your_index” : {
“mappings” : {
“your_type” : {
“properties” : {
“popRank” : {
“type” : “string”
}
}
}
}
}
}
curl -XPOST localhost:9200/test/test/_bulk -d ’
{“index”: {“_id”: 1}}
{“popRank”: 123}
{“index”: {“_id”: 2}}
{“popRank”: -157}
{“index”: {“_id”: 3}}
{“popRank”: 1234}
{“index”: {“_id”: 4}}
{“popRank”: 0}
{“index”: {“_id”: 5}}
{“popRank”: -310}
{“index”: {“_id”: 6}}
{“popRank”: 332}
{“index”: {“_id”: 7}}
{“popRank”: -10}
对上面进行倒序排序,结果会是
332, -310, -157, 1234, 123, -10, 0
他是按照字符串的排序方式进行的,那么如果你想按照自然数的顺序,如何做呢,我们就需要在定义mapping的时候,将他的类型定义成为数字类型,如下
{
“your_index” : {
“mappings” : {
“your_type” : {
“properties” : {
“popRank” : {
“type” : “float” <—- “float” MUST appear here and NOT “string”
}
}
}
}
}
}
那么这样的结果就是
1234, 332, 123, 0, -10, -157, -310
为什么讲这个呢,因为当你在开发的时候,mapping的type是可以不用指定的,elasticsearch会自动判断,是哪一种类型,但是难免elasticsearch的判断事与愿违,所以这个时候我们就需要显示的指定类型了
1,3,5,33,24,6
上面的数字如果用倒序的话,结果会是 6,5,33,3,24,1 。大家发现没有,如果是string 类型,他是不会按照数字类型中的大小进行排序的,他是按照首先比较第一个字符的大小,然后比较第二个字符的大小,依次下来的,所以就得到了上面的结果。那如果是数字类型呢?那结果我想大家应该都知道,是 1,3,5,6,24,33 。会按照自然数的顺序。
那么在进入正题,在elasticsearch 里面sort其实也是这样的,我们来看看下面的例子
{
“your_index” : {
“mappings” : {
“your_type” : {
“properties” : {
“popRank” : {
“type” : “string”
}
}
}
}
}
}
curl -XPOST localhost:9200/test/test/_bulk -d ’
{“index”: {“_id”: 1}}
{“popRank”: 123}
{“index”: {“_id”: 2}}
{“popRank”: -157}
{“index”: {“_id”: 3}}
{“popRank”: 1234}
{“index”: {“_id”: 4}}
{“popRank”: 0}
{“index”: {“_id”: 5}}
{“popRank”: -310}
{“index”: {“_id”: 6}}
{“popRank”: 332}
{“index”: {“_id”: 7}}
{“popRank”: -10}
对上面进行倒序排序,结果会是
332, -310, -157, 1234, 123, -10, 0
他是按照字符串的排序方式进行的,那么如果你想按照自然数的顺序,如何做呢,我们就需要在定义mapping的时候,将他的类型定义成为数字类型,如下
{
“your_index” : {
“mappings” : {
“your_type” : {
“properties” : {
“popRank” : {
“type” : “float” <—- “float” MUST appear here and NOT “string”
}
}
}
}
}
}
那么这样的结果就是
1234, 332, 123, 0, -10, -157, -310
为什么讲这个呢,因为当你在开发的时候,mapping的type是可以不用指定的,elasticsearch会自动判断,是哪一种类型,但是难免elasticsearch的判断事与愿违,所以这个时候我们就需要显示的指定类型了
相关文章推荐
- Android自定义控件ImageViwe(一)——依据控件的大小来设置缩放图片显示
- unity, destroy gameObject & destroy all children
- 云管端概念
- C#: WMI 获取远程 Windows 主机信息
- opencv2.0 saturate_cast<?> 研究
- 关于两个可移动ViewGroup触摸事件冲突处理
- build、compile、rebuild all
- 碰撞检测之Sphere-Box检测
- [DX9/10.1]在现代硬件上模拟调色板贴图
- 待我长发及腰
- 小雷郑重承诺,在2017年之前,发表自己在云计算、在线招聘、电子商务、宠物经济、互联网金融、互联网旅行等至少6个行业领域的研究报告
- 小雷郑重承诺,在2017年之前,发表自己在云计算、在线招聘、电子商务、宠物经济、互联网金融、互联网旅行等至少6个行业领域的研究报告
- 小雷郑重承诺,在2017年之前,发表自己在云计算、在线招聘、电子商务、宠物经济、互联网金融、互联网旅行等至少6个行业领域的研究报告
- windows 10 企业LTSB版激活
- 彩票项目(一) - 总体架构
- 彩票项目(一) - 总体架构
- listView实现分页加载
- const char* ptr 到底是什么意思【转载的,从此不再蛋疼】
- dantiao.php文件提示错误
- mvc 提交Html内容的处理