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": {}
    }
  }
}
相关推荐
KANGBboy6 小时前
ES 父子索引使用
大数据·elasticsearch·搜索引擎
墨神谕10 小时前
ES为什么要进行分片
大数据·elasticsearch·搜索引擎
Elasticsearch11 小时前
Elasticsearch BBQ:一场教科书式的向量搜索 “弯道超车”
elasticsearch
尽兴-11 小时前
ElasticSearch 搜索相关性详解(含评分机制+自定义策略+多字段优化)
大数据·elasticsearch·搜索引擎·相关性·评分机制·自定义策略·多字段优化
yhole11 小时前
Java进阶(ElasticSearch的安装与使用)
java·elasticsearch·jenkins
尽兴-12 小时前
Elasticsearch 索引与文档管理实战:从倒排索引到建模最佳实践
大数据·elasticsearch·django·全文检索·索引
Elastic 中国社区官方博客13 小时前
使用 ES|QL 变量控件将仪表板转变为调查工具
大数据·运维·服务器·数据库·elasticsearch·搜索引擎·全文检索
Elasticsearch15 小时前
原生自动化与 Elastic Workflows — 不需要 SOAR
elasticsearch
逸Y 仙X15 小时前
文章十二:索引数据的写入和删除
java·大数据·spring boot·spring·elasticsearch·搜索引擎·全文检索
Elastic 中国社区官方博客15 小时前
Elasticsearch:shell 工具不是上下文工程的银弹
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索