通过与 Jira 对比,让您更全面了解 PingCode

  • 首页
  • 需求与产品管理
  • 项目管理
  • 测试与缺陷管理
  • 知识管理
  • 效能度量
        • 更多产品

          客户为中心的产品管理工具

          专业的软件研发项目管理工具

          简单易用的团队知识库管理

          可量化的研发效能度量工具

          测试用例维护与计划执行

          以团队为中心的协作沟通

          研发工作流自动化工具

          账号认证与安全管理工具

          Why PingCode
          为什么选择 PingCode ?

          6000+企业信赖之选,为研发团队降本增效

        • 行业解决方案
          先进制造(即将上线)
        • 解决方案1
        • 解决方案2
  • Jira替代方案

25人以下免费

目录

elasticsearch 排序序号怎么获取

elasticsearch 获取排序序号的方法:1、使用默认相关性排序;2、自定义排序规则。使用默认相关性排序是指,如果没有指定任何自定义排序规则,Elasticsearch会默认按照相关性从高到低对搜索结果进行排序。

一、elasticsearch 排序序号怎么获取

1、使用默认相关性排序

如果没有指定任何自定义排序规则,Elasticsearch会默认按照相关性从高到低对搜索结果进行排序。因此,可以取得每个文档的排名,如下所示:

GET /my_index/_search
{
  "query": {
    "match": {
      "my_field": "my_query"
    }
  },
  "size": 10, // 返回的文档数量
  "sort": [
    {
      "_score": "desc" // 按照相关性从高到低排序
    }
  ]
}

在响应结果中,“hits.hits”数组包含搜索结果,其中每个元素都有一个“_score”字段,表示该文档的相关性分数。

2、自定义排序规则

如果需要按照其他字段(例如日期或价格)进行排序,则可以在查询中指定相应的排序规则。此时,“rank”序号可以通过在响应结果中迭代排名顺序的方式得到。

按照日期字段进行排序:

GET /my_index/_search
{
  "query": {
    "match": {
      "my_field": "my_query"
    }
  },
  "size": 10, // 返回的文档数量
  "sort": [
    {
      "my_date_field": {
        "order": "desc" // 按照日期从新到旧排序
      }
    }
  ]
}

在响应结果中,“hits.hits”数组包含搜索结果,其中每个元素都有一个“_score”字段和一个“_source”字段。可以通过迭代排序后的“_source”数组来获取每个文档的排名。例如,在响应结果中,名列前茅个文档的排名为1,第二个文档的排名为2,以此类推。

二、elasticsearch应用场景

1、全文搜索

Elasticsearch提供了全文搜索的功能,适用于电商商品搜索、App搜索、企业内部信息搜索、IT系统搜索等。例如当您运营一个提供客户检索商品的在线电子商城的时候,可以使用Elasticsearch来存储整个商品的目录和库存,并且为客户提供检索和自动推荐的功能。

2、日志分析

复杂的业务场景通常会产生繁杂多样的日志,如Apache Log、System Log、MySQL Log等,往往很难从繁杂的日志中获取价值,却要承担其存储的成本。Elasticsearch能够借助Beats、Logstash等快速对接各种常见的数据源,并通过集成的Kibana高效地完成日志的可视化分析,让日志产生价值。

3、运维监控

当您在ECS或者物理机中部署了Docker容器、MySQL或MongoDB等数据库,或者您有复杂的IOT场景等,可使用Elasticsearch结合Beats、Logstash或ElasticFlow将所有日志实时集中并构建索引,然后通过集成的Kibana灵活地运用数据构建可视化运维看板,并在看板上展示主机名称、IP地址、部署情况、显示颜色等信息。

4、安全分析

当您需要通过日志解决公司内部繁杂的安全审计工作,可通过Elasticsearch分析、检索海量历史日志,高效地完成安全审计工作。同时您可以借助Elasticsearch的数据响应性能,快速感知系统中实时发生的事件,及时帮助您规避风险。

三、elasticsearch相关概念

1、集群(cluster)

一个Elasticsearch集群由一个或多个ES节点组成,并提供集群内所有节点的联合索引和搜索能力(所有节点共同存储数据)。一个集群被命名为少数的名字(默认为elasticsearch),集群名称非常重要,因为节点需要通过集群的名称加入集群。请确保在不同的环境使用不同的集群名称,否则会导致节点添加到错误的集群中。

2、节点(node)

一个节点是集群中的一个服务器,用来存储数据并参与集群的索引和搜索。和集群类似,节点由一个名称来标识,默认情况下,该名称是在节点启动时分配给节点的随机通用少数标识符(UUID)。您也可以自定义任意节点的名称,节点名称对于管理工作很重要,因为通过节点名称可以确定网络中的哪些服务器对应于Elasticsearch集群中的哪些节点。

一个节点可以被添加到指定名称的集群中。默认情况下,每个节点会被设置加入到名称为elasticsearch的集群中,这意味着,如果在您在网络中启动了某些节点(假设这些节点可以发现彼此),它们会自动形成并加入名称为elasticsearch的集群中。

一个集群可以拥有任意多的节点。此外,如果在您的网络中没有运行任何Elasticsearch节点,此时启动一个节点会创建一个名称为elasticsearch的单节点集群。

3、索引(index)

一个索引是一个拥有一些相似特征的文档的集合(相当于关系型数据库中的一个数据库)。例如,您可以拥有一个客户数据的索引,一个商品目录的索引,以及一个订单数据的索引。一个索引通常使用一个名称(所有字母必须小写)来标识,当针对这个索引的文档执行索引、搜索、更新和删除操作的时候,这个名称被用来指向索引。

4、类型(type)

一个类型通常是一个索引的一个逻辑分类或分区,允许在一个索引下存储不同类型的文档(相当于关系型数据库中的一张表),例如用户类型、博客类型等。目前已经不支持在一个索引下创建多个类型,并且类型概念已经在后续版本中删除,详情请参见es官方文档

5、文档(document)

一个文档是可以被索引的基本信息单元(相当于关系型数据库中的一行数据)。例如,您可以为一个客户创建一个文档,或者为一个商品创建一个文档。文档可以用JSON格式来表示。在一个索引中,您可以存储任意多的文档,且文档必须被索引。

6、映射(mapping)

用来定义一个文档以及其所包含的字段如何被存储和索引,例如在mapping中定义字段的名称和类型,以及所使用的分词器。相当于关系型数据库中的Schema。 分片(shards) 代表索引分片,Elasticsearch可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上,构成分布式搜索。分片的数量只能在索引创建前指定,并且索引创建后不能更改。

延伸阅读1:elasticsearch

Elasticsearch 是位于 Elastic Stack 核心的分布式搜索和分析引擎。Logstash 和 Beats 有助于收集、聚合和丰富您的数据并将其存储在 Elasticsearch 中。Kibana 使您能够以交互方式探索、可视化和分享对数据的见解,并管理和监控堆栈。

Elasticsearch 为所有类型的数据提供近乎实时的搜索和分析。无论您拥有结构化或非结构化文本、数字数据还是地理空间数据,Elasticsearch 都能以支持快速搜索的方式高效地存储和索引它。您可以超越简单的数据检索和聚合信息来发现数据中的趋势和模式。随着您的数据和查询量的增长,Elasticsearch 的分布式特性使您的部署能够随之无缝增长。

相关文章