Elastic random_score的使用

random_score的使用

在Elasticsearch中,random_score查询可以用来随机排序搜索结果,这对于实现诸如轮播、随机推荐等功能非常有用。

random_score的语法

bash 复制代码
GET /<索引名>/_search
{
  "query": {
    "function_score": {
      "query": { "match_all": {} }, // 或者你的查询条件
      "random_score": {
        "seed": 12345 // 设置一个种子值,相同的种子值会产生相同的随机顺序
      }
    }
  }
}

random_score案例

场景

假设我们有一个商品索引,我们需要随机获取商品

索引创建

bash 复制代码
PUT /products
{
  "mappings": {
    "properties": {
      "product_id": {
        "type": "keyword"
      },
      "category": {
        "type": "keyword"
      }
    }
  }
}

文档插入

bash 复制代码
POST /products/_doc/
{
  "product_id": "prod1",
  "category": "electronics"
}

POST /products/_doc/
{
  "product_id": "prod2",
  "category": "clothing"
}

POST /products/_doc/
{
  "product_id": "prod10",
  "category": "books"
}

查询

如果你想每次查询都得到相同的随机顺序,可以指定一个种子值:

bash 复制代码
GET /products/_search
{
  "query": {
    "function_score": {
      "query": { "match_all": {} }, // 或者使用具体的查询条件
      "random_score": {
        "seed": 12345
      }
    }
  }
}

不指定种子值:

bash 复制代码
GET /products/_search
{
  "query": {
    "function_score": {
      "query": { "match_all": {} }, // 或者使用具体的查询条件
      "random_score": {}
    }
  }
}
相关推荐
小鸡脚来咯8 小时前
Git 新手入门指南
大数据·git·elasticsearch
highly200916 小时前
Gitflow
大数据·elasticsearch·搜索引擎
Dxy123931021620 小时前
Elasticsearch 8.13.4 深度进阶指南:从底层架构到高阶实战的全维突围
大数据·elasticsearch·架构
a努力。20 小时前
中国电网Java面试被问:RPC序列化的协议升级和向后兼容
java·开发语言·elasticsearch·面试·职场和发展·rpc·jenkins
Hello.Reader21 小时前
Flink Elasticsearch Connector 从 0 到 1 搭一个高吞吐、可容错的 ES Sink
大数据·elasticsearch·flink
小雪_Snow1 天前
Elasticsearch 安装教程【Windows,9.2.0 版本】
elasticsearch
Elastic 中国社区官方博客2 天前
使用 Elasticsearch 管理 agentic 记忆
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
七夜zippoe2 天前
Elasticsearch核心概念与Java客户端实战 构建高性能搜索服务
java·大数据·elasticsearch·集群·索引·分片
忍冬行者2 天前
Elasticsearch 超大日志流量集群搭建(网关 + 独立 Master + 独立 Data 纯生产架构,角色完全分离,百万级日志吞吐)
大数据·elasticsearch·云原生·架构·云计算
·云扬·3 天前
使用Prometheus+Grafana实现Elasticsearch监控的完整实践
elasticsearch·grafana·prometheus