ElasticSearch权威指南学习(排序)
排序方式
相关性排序
- 默认情况下,结果集会按照相关性进行排序 -- 相关性越高,排名越靠前。
- 相关性分值会用_score字段来给出一个浮点型的数值,所以默认情况下,结果集以_score进行倒序排列。
字段值排序
- 使用 sort 参数进行排序:
GET /_search
{
"query" : {
"filtered" : {
"filter" : { "term" : { "user_id" : 1 }}
}
},
"sort": { "date": { "order": "desc" }}
}
- 你会发现这里有两个不同点:
"hits" : {
"total" : 6,
"max_score" : null, // 没有最高分了
"hits" : [ {
"_index" : "us",
"_type" : "tweet",
"_id" : "14",
"_score" : null, // 没有分了
"_source" : {
"date": "2014-09-24",
...
},
"sort" : [ 1411516800000 ] //排序条件时间转成了毫秒
},
...
}
默认排序
- 指定要排序的字段名称:
"sort": "number_of_children"
字段值默认以顺序排列,而 _score 默认以倒序排列。
多级排序
- 如果我们想要合并一个查询语句,并且展示所有匹配的结果集使用第一排序是date,第二排序是 _score:
GET /_search
{
"query" : {
"filtered" : {
"query": { "match": { "tweet": "manage text search" }},
"filter" : { "term" : { "user_id" : 2 }}
}
},
"sort": [
{ "date": { "order": "desc" }},
{ "_score": { "order": "desc" }}
]
}
- 结果集会先用第一排序字段来排序,当用用作第一字段排序的值相同的时候, 然后再用第二字段对第一排序值相同的文档进行排序,以此类推。
字符串参数排序
- 字符查询也支持自定义排序,在查询字符串使用sort参数就可以:
GET /_search?sort=date:desc&sort=_score&q=search
为多值字段排序
- 在为一个字段的多个值进行排序的时候, 其实这些值本来是没有固定的排序的-- 一个拥有多值的字段就是一个集合, 你准备以哪一个作为排序依据呢?
- 对于数字和日期,你可以从多个值中取出一个来进行排序,你可以使用min, max, avg 或 sum这些模式。
- 比说你可以在 dates 字段中用最早的日期来进行排序:
"sort": {
"dates": {
"order": "asc",
"mode": "min"
}
}
相关性
- 查询语句会为每个文档添加一个 _score 字段。评分的计算方式取决于不同的查询类型
- 理解评分标准
- ElasticSearch 在 每个查询语句中都有一个explain参数,将 explain 设为 true 就可以得到更详细的信息
GET /_search?explain //xplain 参数可以让返回结果添加一个 _score 评分的得来依据。
{
"query" : { "match" : { "tweet" : "honeymoon" }}
}
ElasticSearch权威指南学习(排序)的更多相关文章
- ElasticSearch权威指南学习(索引管理)
创建索引 当我们需要确保索引被创建在适当数量的分片上,在索引数据之前设置好分析器和类型映射. 手动创建索引,在请求中加入所有设置和类型映射,如下所示: PUT /my_index { "se ...
- ElasticSearch权威指南学习(分布式搜索)
查询阶段 在初始化查询阶段(query phase),查询被向索引中的每个分片副本(原本或副本)广播. 每个分片在本地执行搜索并且建立了匹配document的优先队列(priority queue). ...
- ElasticSearch权威指南学习(结构化查询)
请求体查询 简单查询语句(lite)是一种有效的命令行adhoc查询.但是,如果你想要善用搜索,你必须使用请求体查询(request body search)API. 空查询 我们以最简单的 sear ...
- ElasticSearch权威指南学习(映射和分析)
概念 映射(mapping)机制用于进行字段类型确认,将每个字段匹配为一种确定的数据类型(string, number, booleans, date等).+ 分析(analysis)机制用于进行全文 ...
- ElasticSearch权威指南学习(文档)
什么是文档 在Elasticsearch中,文档(document)这个术语有着特殊含义.它特指最顶层结构或者根对象(root object)序列化成的JSON数据(以唯一ID标识并存储于Elasti ...
- ElasticSearch权威指南学习(分布式文档存储)
路由文档到分片 当你索引一个文档,它被存储在单独一个主分片上.Elasticsearch是如何知道文档属于哪个分片的呢?当你创建一个新文档,它是如何知道是应该存储在分片1还是分片2上的呢? 进程不能是 ...
- ElasticSearch权威指南学习(分布式集群)
空集群 只有一个空节点的集群 一个节点(node)就是一个Elasticsearch实例,而一个集群(cluster)由一个或多个节点组成,它们具有相同的cluster.name,它们协同工作,分享数 ...
- HTTP权威指南-学习笔记
目录 HTTP权威指南-学习笔记 HTTP: Web的基础 URL与资源 HTTP报文 连接管理 HTTP结构 Web服务器 代理 缓存 集成点: 网关,隧道及中继 Web机器人 识别,认证与安全 客 ...
- Elasticsearch权威指南(中文版)
Elasticsearch权威指南(中文版) 下载地址: https://pan.baidu.com/s/1bUGJmwS2Gp0B32xUyXxCIw 扫码下面二维码关注公众号回复100010 获取 ...
随机推荐
- EOS 权限
[EOS权限] 1.查看权限 cleos get account $(Account_Name) 2.使用 cleos set account permission 命令来修改权限 可以看到,owne ...
- 3. Go语言基本类型
Go语言基本类型如下: bool string 数值类型 (int8, int16, int32, int64, int, uint8, uint16, uint32, uint64, uint, f ...
- 二维树状数组poj1195
题目链接:https://vjudge.net/problem/POJ-1195 题意:一开始输入0和一个s,0代表开始,s代表这是一个s*s的图,接下来会输入1或2,1代表进行单点修改,后面会接3个 ...
- python note 04 list的应用及元组
1,昨日内容 ascii:字母,数字,特殊字符:1个字节,8位 Unicode:16位 两个字节 升级 32 位 四个字节 utf-8:最少一个字节 8位表示. 英文字母 8位 1个字节 欧洲16位, ...
- mysql 判断字符串是否有某个字符
代码: SELECT LOCATE("_","a_123") -->2 (返回字符的位置,从1开始) SELECT ('123' REGEXP '[^0 ...
- project1
知识漏洞 有空就默写一下-.- [概念] 要好好理解并且背下来记住 MVC要分开,Servlet里面不处理计算的逻辑,只有调用函数(是不是变量传进来以后,调用都不能有呢?) clear map不能直 ...
- blockchain[z]
https://medium.com/programmers-blockchain/creating-your-first-blockchain-with-java-part-2-transactio ...
- java基础面试(上)
面向对象的特征 答:抽象.继承.封装.多态 short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗? 答:对于short s1 = 1; s1 ...
- Win10电脑系统使用技巧
现如今,电脑已经成为我们不可或缺的伙伴,陪伴着我们的工作.娱乐和生活,而Windows10在大家使用的电脑中占据了大多数,但是很多的小伙伴对它的许多功能并不真正了解,今天小编就带大家了解一下这些技巧, ...
- CentOS_mini下安装docker之 安装 golang
取消挂载: 命令:umount /mnt/cdrom 下载 Go 语言文件 -bit Linux wget http://www.golangtc.com/static/go/go1.4.2.linu ...