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": {}
    }
  }
}
相关推荐
Elastic 中国社区官方博客1 小时前
Elastic-caveman : 在不损失 Elastic 最佳效果的情况下,将 AI 响应 tokens 减少64%
大数据·运维·数据库·人工智能·elasticsearch·搜索引擎·全文检索
身如柳絮随风扬3 小时前
深度解析 Elasticsearch 搜索服务:核心原理、架构与优化实践
大数据·elasticsearch·架构
kft13144 小时前
AI 驱动测试 2.0:当测试智能体成为你的“超级 QA“
大数据·人工智能·elasticsearch
Elastic 中国社区官方博客9 小时前
在 Elastic 中使用 MCP 自动化用户旅程以进行合成监控
大数据·运维·人工智能·elasticsearch·搜索引擎·自动化·可用性测试
逸Y 仙X11 小时前
文章十六:ElasticSearch 使用enrich策略实现大宽表
java·大数据·数据库·elasticsearch·搜索引擎·全文检索
Elasticsearch11 小时前
用于 JavaScript 和 TypeScript 的 ES|QL 查询构建器:流式、类型安全的查询构建
elasticsearch
Elasticsearch11 小时前
警报之后:重新思考我们如何调查金融犯罪
elasticsearch
Elasticsearch11 小时前
Elastic 和 Cursor 合作 加速 上下文工程 与 coding agents
elasticsearch
Volunteer Technology12 小时前
ES高级搜索功能
android·大数据·elasticsearch
Elastic 中国社区官方博客14 小时前
通过 Elastic MCP Server 将 Cursor 连接到生产日志
大数据·运维·人工智能·elasticsearch·搜索引擎·全文检索·mcp