• 默认情况下,ElasticSearch 会根据算分进行排序;
  • 可以使用 sort API 指定排序的规则;
POST /kibana_sample_data_ecommerce/_search
{
"size": ,
"query": {
"match_all": { }
},
"sort": [
{"order_date": {"order": "desc"}}
]
}

在 Elasticsearch 中, 相关性得分 由一个浮点数进行表示,并在搜索结果中通过 _score 参数返回
默认排序是 _score 降序

有时,相关性评分对你来说并没有意义。例如,下面的查询返回所有 user_id 字段包含 1 的结果:

多级排序

排序条件的顺序是很重要的。结果首先按第一个条件排序,仅当结果集的第一个 sort 值完全相同时才会按照第二个条件进行排序,以此类推。

GET /_search

GET /_search
{
"query" : {
"bool" : {
"must": { "match": { "tweet": "manage text search" }},
"filter" : { "term" : { "user_id" : }}
}
},
"sort": [
{ "date": { "order": "desc" }},
{ "_score": { "order": "desc" }}
]
}

字符串排序与多字段

被解析的字符串字段也是多值字段, 但是很少会按照你想要的方式进行排序。
如果你想分析一个字符串,如 fine old art , 这包含 3 项。
我们很可能想要按第一项的字母排序,然后按第二项的字母排序,诸如此类,
但是 Elasticsearch 在排序过程中没有这样的信息。。一个字符串如果进行分词之后,如果你对字符串进行排序的话,他的排序规则就不想日期、数字那样是固定的,如果想按照一个字符串作为一个整体进行排序,不进行分词之后的排序,可以做下面的操作

一个简单的方法是用两种方式对同一个字符串进行索引,这将在文档中包括两个字段:
analyzed 用于搜索,
not_analyzed 用于排序

"tweet": {
"type": "string",
"analyzer": "english"
}
将上面的转为下面的格式
"tweet": {
"type": "string",
"analyzer": "english",
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed"
}
}
}

其中字段tweet字段进行查询操作会进行分词,tweet.raw字段不进行分词,作为sort操作,整个字符串不进行分词整个字符串进行排序,但是将文本字段用于聚合,排序需要开启fielddata字段

https://segmentfault.com/a/1190000016645964

tweet

ElasticSearch中的sort排序和filedData作用的更多相关文章

  1. Java开发中使用sort排序

    Java开发中使用sort排序 BaiduSpring https://baijiahao.baidu.com/s?id=1625440912158830354&wfr=spider& ...

  2. C++ 中的sort()排序函数用法

    sort(first_pointer,first_pointer+n,cmp) 该函数可以给数组,或者链表list.向量排序. 实现原理:sort并不是简单的快速排序,它对普通的快速排序进行了优化,此 ...

  3. 解析JavaScript中的sort()排序方法以及原理

    Array.sort()方法将数组中的元素进行排序,返回排序后的数组,默认是按照升序排序的.sort方法会调用数组中每一项的toString()方法,然后按照ascii编码进行排序,如果数组含有und ...

  4. 模拟javascript中的sort排序

    一.javascript中sort对数据进行排序的原理 sort() 方法对数组的元素做原地的排序,并返回这个数组. sort 可能不是稳定的.默认按照字符串的Unicode码位点排序; 语法:arr ...

  5. java中Collections.sort排序详解

    Comparator是个接口,可重写compare()及equals()这两个方法,用于比价功能:如果是null的话,就是使用元素的默认顺序,如a,b,c,d,e,f,g,就是a,b,c,d,e,f, ...

  6. C++ 中的sort排序用法

    STL中就自带了排序函数sortsort 对给定区间所有元素进行排序 要使用此函数只需用#include <algorithm> sort即可使用,语法描述为:sort(begin,end ...

  7. (网页)java中Collections.sort排序详解(转)

    转自CSDN: Comparator是个接口,可重写compare()及equals()这两个方法,用于比价功能:如果是null的话,就是使用元素的默认顺序,如a,b,c,d,e,f,g,就是a,b, ...

  8. C/C++-中的sort排序用法

    转载于:http://www.cnblogs.com/luorende/p/6121906.htmlSTL中就自带了排序函数sortsort 对给定区间所有元素进行排序 要使用此函数只需用#inclu ...

  9. [转]java中Collections.sort排序详解

      Comparator是个接口,可重写compare()及equals()这两个方法,用于比价功能:如果是null的话,就是使用元素的默认顺序,如a,b,c,d,e,f,g,就是a,b,c,d,e, ...

随机推荐

  1. 跟着阿里学JavaDay04——Java基础语法(二)

    一.Java运算符 运算符的简介 所有的程序开发,都是对数字的进行处理.而对数字的处理,一定会存在所谓的操作模式,而这些操作模式就被称为运算符. 算术运算符 对于算术运算符,我们主要掌握++,--的运 ...

  2. jchdl进展 - 20180918

    这几天看了下SystemC,发现与jchdl相似的地方,或者jchdl与之相似的地方. 但总体而言: 1. jchdl的模型更简单,更清晰: 2. jchdl还有一些建模需要的工具需要补充,比如: i ...

  3. Chisel3 - util - OneHot

    https://mp.weixin.qq.com/s/Jsy8P3m9W2EYKwneGVekiw   独热码相关的电路生成器.   参考链接: https://github.com/freechip ...

  4. Shell 脚本(四) ”read 读取控制台输入” 与 “函数”

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 八.read 读取控制台输入 1.基本语法 read(选项)(参数) 选项: -p: 指定读取值时的提示 ...

  5. Java实现 蓝桥杯VIP 算法训练 调和数列

    问题描述 输入一个实数x,求最小的n使得,1/2+1/3+1/4+-+1/(n+1)>=x. 输入的实数x保证大于等于0.01,小于等于5.20,并且恰好有两位小数.你的程序要能够处理多组数据, ...

  6. Java实现 LeetCode 149 直线上最多的点数

    149. 直线上最多的点数 给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上. 示例 1: 输入: [[1,1],[2,2],[3,3]] 输出: 3 解释: ^ | | o | ...

  7. Java实现 LeetCode 93 复原IP地址

    93. 复原IP地址 给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式. 示例: 输入: "25525511135" 输出: ["255.255.11. ...

  8. Java实现蓝桥杯有歧义的号码

    描述 小Hi参加了一场大型马拉松运动会,他突然发现面前有一位参赛者背后的号码竟然和自己一样,也是666.仔细一看,原来那位参赛者把自己号码帖反(旋转180度)了,结果号码999看上去变成了号码666. ...

  9. Python学习之斐波那契数列实现篇

    描述 一个斐波那契序列,F(0) = 0, F(1) = 1, F(n) = F(n-1) + F(n-2) (n>=2),根据n的值,计算斐波那契数F(n),其中0≤n≤1000. 输入 输入 ...

  10. 为什么zookeeper的节点配置的个数必须是奇数个

    选举机制(FastLeaderElection算法):sid最大且被超过集群中超过半数的机器拥护就会成为leader.所以只有两种情况无法选出leader:整个集群只有2台服务器(注意不是只剩2台,而 ...