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": {}
    }
  }
}
相关推荐
二爷记4 小时前
QXQ3真i9级CPU是捡漏还是踩坑!i9-12900 ES版CPU值得入手吗?
大数据·elasticsearch·搜索引擎·全文检索
Hello.Reader5 小时前
在 Ubuntu 环境为 Elasticsearch 引入 `icu_tokenizer
ubuntu·elasticsearch·jenkins
jack_xu14 小时前
高频面试题:如何保证数据库和es数据一致性
后端·mysql·elasticsearch
技术项目引流14 小时前
elasticsearch查询中的特殊字符影响分析
大数据·elasticsearch·搜索引擎
yangmf204020 小时前
使用 Logstash 迁移 MongoDB 数据到 Easysearch
java·elasticsearch·搜索引擎
南客先生1 天前
海量聊天消息处理:ShardingJDBC分库分表、ClickHouse冷热数据分离、ES复合查询方案、Flink实时计算与SpringCloud集成
java·clickhouse·elasticsearch·flink·springcloud·shardingjdbc
MaYuKang1 天前
「ES数据迁移可视化工具(Python实现)」支持7.x索引数据互传
大数据·数据库·python·mysql·elasticsearch
Elasticsearch1 天前
使用 AutoGen 与 Elasticsearch
elasticsearch
xmyLydia1 天前
Kafka + Elasticsearch 构建搜索型审计日志系统实战(含 Kibana 可视化)
elasticsearch·kafka
怒放吧德德2 天前
MySQL篇:MySQL如何实时同步到ES
mysql·elasticsearch·面试