elasticsearch index sorting ,索引排序

这篇具有很好参考价值的文章主要介绍了elasticsearch index sorting ,索引排序。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

es默认的搜索排序是_score,通过评分排序,但是对于大数据量,评分一致的情况下也还是会乱序,官方说可以使用_doc,但是这个索引插入顺序是按照分片存的,也就是为2 的顺序可能多个分片都存在。所以实测并不好用。博主在做大数据量的排序时候,使用datatime字段排序,解决了乱序问题。
本文我想使用另外的解决方案,解决这个使用

index sorting

在Elasticsearch中创建新索引时,可以配置每个Shard中的分段如何排序。默认情况下,Lucene不提供任何排序。index.sort.*设置定义了哪些字段应该用于每个段中的文档排序。

如下我们提供了一个单一字段排序

PUT my-index-000001
{
  "settings": {
    "index": {
      "sort.field": "date", 
      "sort.order": "desc"  
    }
  },
  "mappings": {
    "properties": {
      "date": {
        "type": "date"
      }
    }
  }
}

  1. sort.field 指明了排序字段
  2. sort.order 指明了排序顺序

多字段排序

PUT my-index-000001
{
  "settings": {
    "index": {
      "sort.field": [ "username", "date" ], 
      "sort.order": [ "asc", "desc" ]       
    }
  },
  "mappings": {
    "properties": {
      "username": {
        "type": "keyword",
        "doc_values": true
      },
      "date": {
        "type": "date"
      }
    }
  }
}

Index sorting支持以下设置

  1. index.sort.field
    用于排序的字段列表,字段类型必须是boolean, numeric, date ,keyword
  2. index.sort.order
    设置排序字段的顺序设置
    asc: 升序
    desc: 降序
  3. index.sort.mode
    min: Pick the lowest value.
    max: Pick the highest value.
  4. index.sort.missing
    对于排序字段为空的提供以下两种规则
    _last: 排序字段为空,放在排序的最后面.
    _first: 排序字段为空,放在排序的最前面.

查询

GET /events/_search
{
  "size": 10,
  "sort": [ 
      { "date": "desc" }
  ],
  "track_total_hits": false
}

注意

  1. track_total_hits 使用这个参数,es将不会返回总数,查到top10就返回
  2. 查询时候的排序要与索引排序一致

https://discuss.elastic.co/t/too-large-data-for-id/179500

https://scsundefined.gitbooks.io/elasticsearch-reference-cn/content/s06/03_03_sort.html

https://discuss.elastic.co/t/does-it-make-sense-to-add-timestamp-in-index-sorting/286551

https://www.elastic.co/cn/blog/optimizing-sort-queries-in-elasticsearch-for-faster-results文章来源地址https://www.toymoban.com/news/detail-764932.html

到了这里,关于elasticsearch index sorting ,索引排序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Elasticsearch】ES精确查询和范围查询,ES时间字段排序实例,ES倒排索引介绍

    termQuery matchQuery 模糊查询 multiMatchQuery 多个字段模糊查询 如果时间字段写入时用的类型是Text,可以用“时间字段.keyword”来处理 #查询前传入分页参数 #分页后拿到总记录数 把文档D对应到的映射转换为到文档ID的映射,每个都对应着一系列的文档,这些文

    2024年02月15日
    浏览(118)
  • Python之排序函数sort(),sorted(),sort_values(),sort_index().

    1. sorted()函数 sorted()函数是Python的内置函数,此函数不改变原序列,在排序后会生成一个新的序列。调用时,一般只需要给出一个序列即可,该序列可以是列表,字典,元组,字符串。其余参数取默认值,默认为升序排序。最终结果将返回一个以列表为容器的返回值。若该序

    2024年02月04日
    浏览(46)
  • ES-index索引配置

      index索引配置项使用。 index_options   Index 有4中配置,可以控制倒排索引的内容。   Text类型默认记录positions,其他默认docs。记录的内容越多,所占用的空间越大。   Index 有4中配置如下: docs   记录 doc id 。 freqs   记录 doc id 和 term frequencies 。 positions   记录

    2023年04月08日
    浏览(37)
  • ElasticSearch 实战:查询Sort(查询排序)

    在Elasticsearch中,查询排序(Sort)功能允许用户控制搜索结果的返回顺序。这有助于根据特定字段的值对匹配文档进行升序(asc)或降序(desc)排列。以下是如何在实战中使用Elasticsearch查询排序的示例: 一、基本排序 **1. 在URL参数中指定排序 : 此请求将按照 title 字段的值

    2024年04月16日
    浏览(30)
  • Elasticsearch Index Monitoring(索引监控)之Index Stats API详解

    index_current 当前正在执行索引操作的个数。 index_failed 失败的索引操作次数。 delete_total 执行删除索引操作的次数。 delete_time_in_millis 删除索引操作总耗时。 delete_current 当前正在执行删除索引操作的个数。 noop_update_total 空更新总次数(检测到空更新的次数)。 is_throttled 索引是

    2024年04月09日
    浏览(44)
  • ES之API系列--index template(索引模板)的用法(有实例)

    原文网址:ES之API系列--index template(索引模板)的用法(有实例)_IT利刃出鞘的博客-CSDN博客 说明 本文介绍ElasticSearch的index template(索引模板)的用法(有实例)。 官网网址 https://www.elastic.co/guide/en/elasticsearch/reference/8.0/index-templates.html 作用概述         在 新建 索引时,如果索引名

    2024年04月09日
    浏览(40)
  • elasticsearch使用脚本 滚动关闭索引,更新index setting

         在旧的索引中更新mapping时,新增了分词器(分词器已经在模板中添加),但是在更新mapping时报错: 查看elasticsearch官网,发现不允许在已经存在的索引中动态更新分词器,只能先将索引close,更新分词器,然后再打开 Update index settings API | Elasticsearch Guide [8.3] | Elastic 2.1 由

    2024年02月08日
    浏览(51)
  • elasticsearch中创建索引模板_index_template

            索引模版是创建索引时自动应用提前设置好的settings、mappings和aliases,通过索引的名称进行匹配。         对索引模版的更改时不会影响目前已经根据索引模版创建的索引。         使用索引模版可以省去创建索引时再次指定settings、mappings、aliases的步骤,

    2024年02月01日
    浏览(75)
  • Elasticsearch Index Templates(索引模板),如何实现分布式锁

    “type”: “keyword” }, “created_at”: { “type”: “date”, “format”: “” } } } } } 代码@1:触发条件。 代码@2:索引配置定义。 代码@3:索引映射配置。 上述示例对应的JAVA示例如下: public static final void createIndexTemp() { RestHighLevelClient client = EsClient.getClient(); try { PutIndexTemplateRequ

    2024年04月22日
    浏览(37)
  • Elasticsearch之Index Setting:索引的静态配置与动态配置

            索引的配置项按是否可以更改分为静态配置与动态配置,所谓的 静态配置即索引创建后不能修改。 索引静态配置  【索引创建后不能修改】 index.number_of_shards:索引分片的数量。在ES层面可以通过es.index.max_number_of_shards属性设置索引最大的分片数,默认为1024,in

    2024年02月16日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包