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": {}
    }
  }
}
相关推荐
在未来等你1 天前
Elasticsearch面试精讲 Day 18:内存管理与JVM调优
大数据·分布式·elasticsearch·搜索引擎·面试
Elasticsearch1 天前
在 Elastic Observability 中使用 Discover 的追踪获取更深入的应用洞察
elasticsearch
婲落ヽ紅顏誶1 天前
测试es向量检索
大数据·elasticsearch·搜索引擎
咖啡Beans2 天前
Docker安装ELK(Elasticsearch + Logstash + Kibana)
后端·elasticsearch·docker
一勺菠萝丶2 天前
Jenkins 构建 Node 项目报错解析与解决——pnpm lockfile 问题实战
elasticsearch·servlet·jenkins
小花鱼20252 天前
Elasticsearch (ES)相关
大数据·elasticsearch
阿里嘎多哈基米2 天前
ES——(三)DSL高级查询
elasticsearch·搜索引擎·全文检索·kibana·倒排索引
AAA修煤气灶刘哥2 天前
ES 高级玩法大揭秘:从算分骚操作到深度分页踩坑,后端 er 速进!
java·后端·elasticsearch
island13142 天前
【C++框架#5】Elasticsearch 安装和使用
开发语言·c++·elasticsearch
阿里嘎多哈基米2 天前
ES——(一)基本概念
elasticsearch·kibana·倒排索引·dsl·非结构化数据