排序方式

  1. 相关性排序

    • 默认情况下,结果集会按照相关性进行排序 -- 相关性越高,排名越靠前。
    • 相关性分值会用_score字段来给出一个浮点型的数值,所以默认情况下,结果集以_score进行倒序排列。
  2. 字段值排序

    • 使用 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 ] //排序条件时间转成了毫秒
    },
    ...
    }
  3. 默认排序

    • 指定要排序的字段名称:
    "sort": "number_of_children"

    字段值默认以顺序排列,而 _score 默认以倒序排列。

  4. 多级排序

    • 如果我们想要合并一个查询语句,并且展示所有匹配的结果集使用第一排序是date,第二排序是 _score:
    GET /_search
    {
    "query" : {
    "filtered" : {
    "query": { "match": { "tweet": "manage text search" }},
    "filter" : { "term" : { "user_id" : 2 }}
    }
    },
    "sort": [
    { "date": { "order": "desc" }},
    { "_score": { "order": "desc" }}
    ]
    }
    • 结果集会先用第一排序字段来排序,当用用作第一字段排序的值相同的时候, 然后再用第二字段对第一排序值相同的文档进行排序,以此类推。
  5. 字符串参数排序

    • 字符查询也支持自定义排序,在查询字符串使用sort参数就可以:
    GET /_search?sort=date:desc&sort=_score&q=search
  6. 为多值字段排序

    • 在为一个字段的多个值进行排序的时候, 其实这些值本来是没有固定的排序的-- 一个拥有多值的字段就是一个集合, 你准备以哪一个作为排序依据呢?
    • 对于数字和日期,你可以从多个值中取出一个来进行排序,你可以使用min, max, avg 或 sum这些模式。
    • 比说你可以在 dates 字段中用最早的日期来进行排序:
    "sort": {
    "dates": {
    "order": "asc",
    "mode": "min"
    }
    }

相关性

  1. 查询语句会为每个文档添加一个 _score 字段。评分的计算方式取决于不同的查询类型
  2. 理解评分标准
    • ElasticSearch 在 每个查询语句中都有一个explain参数,将 explain 设为 true 就可以得到更详细的信息
    GET /_search?explain //xplain 参数可以让返回结果添加一个 _score 评分的得来依据。
    {
    "query" : { "match" : { "tweet" : "honeymoon" }}
    }

ElasticSearch权威指南学习(排序)的更多相关文章

  1. ElasticSearch权威指南学习(索引管理)

    创建索引 当我们需要确保索引被创建在适当数量的分片上,在索引数据之前设置好分析器和类型映射. 手动创建索引,在请求中加入所有设置和类型映射,如下所示: PUT /my_index { "se ...

  2. ElasticSearch权威指南学习(分布式搜索)

    查询阶段 在初始化查询阶段(query phase),查询被向索引中的每个分片副本(原本或副本)广播. 每个分片在本地执行搜索并且建立了匹配document的优先队列(priority queue). ...

  3. ElasticSearch权威指南学习(结构化查询)

    请求体查询 简单查询语句(lite)是一种有效的命令行adhoc查询.但是,如果你想要善用搜索,你必须使用请求体查询(request body search)API. 空查询 我们以最简单的 sear ...

  4. ElasticSearch权威指南学习(映射和分析)

    概念 映射(mapping)机制用于进行字段类型确认,将每个字段匹配为一种确定的数据类型(string, number, booleans, date等).+ 分析(analysis)机制用于进行全文 ...

  5. ElasticSearch权威指南学习(文档)

    什么是文档 在Elasticsearch中,文档(document)这个术语有着特殊含义.它特指最顶层结构或者根对象(root object)序列化成的JSON数据(以唯一ID标识并存储于Elasti ...

  6. ElasticSearch权威指南学习(分布式文档存储)

    路由文档到分片 当你索引一个文档,它被存储在单独一个主分片上.Elasticsearch是如何知道文档属于哪个分片的呢?当你创建一个新文档,它是如何知道是应该存储在分片1还是分片2上的呢? 进程不能是 ...

  7. ElasticSearch权威指南学习(分布式集群)

    空集群 只有一个空节点的集群 一个节点(node)就是一个Elasticsearch实例,而一个集群(cluster)由一个或多个节点组成,它们具有相同的cluster.name,它们协同工作,分享数 ...

  8. HTTP权威指南-学习笔记

    目录 HTTP权威指南-学习笔记 HTTP: Web的基础 URL与资源 HTTP报文 连接管理 HTTP结构 Web服务器 代理 缓存 集成点: 网关,隧道及中继 Web机器人 识别,认证与安全 客 ...

  9. Elasticsearch权威指南(中文版)

    Elasticsearch权威指南(中文版) 下载地址: https://pan.baidu.com/s/1bUGJmwS2Gp0B32xUyXxCIw 扫码下面二维码关注公众号回复100010 获取 ...

随机推荐

  1. LeetCode OJ 102. Binary Tree Level Order Traversal

    题目 Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to rig ...

  2. uboot 设备树 libfdt

    http://www.cnblogs.com/leaven/p/6295999.html

  3. POJ-2387.Til the Cows Come Home.(五种方法:Dijkstra + Dijkstra堆优化 + Bellman-Ford + SPFA + Floyd-Warshall)

    昨天刚学习完最短路的算法,今天开始练题发现我是真的菜呀,居然能忘记邻接表是怎么写的,真的是菜的真实...... 为了弥补自己的菜,我决定这道题我就要用五种办法写出,并在Dijkstra算法堆优化中另外 ...

  4. Codeforces Round #449 (Div. 2)

    Codeforces Round #449 (Div. 2) https://codeforces.com/contest/897 A #include<bits/stdc++.h> us ...

  5. vue去掉地址栏#(带来的后果)

    按以下修改后,带来的后果:打包后部分图片访问不到,首页没加载router-view内容 router 的index中配置模式设置为history export default new Router({ ...

  6. [leetcode]10. Regular Expression Matching正则表达式的匹配

    Given an input string (s) and a pattern (p), implement regular expression matching with support for  ...

  7. 完全理解 Python 迭代对象、迭代器、生成器

    完全理解 Python 迭代对象.迭代器.生成器 2017/05/29 · 基础知识 · 9 评论 · 可迭代对象, 生成器, 迭代器 分享到: 原文出处: liuzhijun    本文源自RQ作者 ...

  8. MySQL优化(五) SQL 语句的优化 索引、explain

    一.索引 1.分类 (1)主键索引:当一张表的某个字段设置为主键时,该字段就是主键索引: (2)唯一索引:索引列中的值必须是唯一的,但是允许为空值(可以存在多个null): (3)普通索引:基本索引类 ...

  9. CSS的六大选择器

    选择器:选择器是一种模式,用于选择需要添加样式的元素. 首先简述六大选择器 基本选择器 标签选择器 类选择器 ID选择器 高级选择器 层次选择器 结构伪类选择器 属性选择器 其中基本选择器与层次选择器 ...

  10. shell启动执行cypher语句

    1.跳转到目录:cd /data/soft/neo4j-community-not/ 2.修改配置文件:nano ./conf/neo4j.conf: 3. 登录:bin/cypher-shell - ...