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": {}
    }
  }
}
相关推荐
Elasticsearch11 小时前
将 Embedding 模型加载到 Elasticsearch 中
elasticsearch
Elasticsearch1 天前
使用 Elasticsearch open inference API 对 OpenAI chat completions 进行支持
elasticsearch
Linux运维技术栈1 天前
业务不停机、数据零丢失:Redis / RabbitMQ / Elasticsearch 三大核心中间件升级改造集群无缝平滑迁移
redis·elasticsearch·rabbitmq
Elasticsearch1 天前
15 行点击跟踪代码,告诉你搜索日志无法揭示的信息
elasticsearch
Elastic 中国社区官方博客1 天前
Elasticsearch:语义搜索快速入门
大数据·人工智能·elasticsearch·搜索引擎·全文检索
1名持续学习的码农2 天前
GPT Plus、GPT Pro用户第一次用Codex,项目权限和Git分支怎么设置?
人工智能·git·gpt·elasticsearch·ai编程·codex
小罗水2 天前
附录A 各微服务完整 application.yml 配置汇总
数据库·elasticsearch·微服务
Elasticsearch2 天前
使用 Gemma、Hugging Face 和 Elasticsearch 构建 RAG 系统
elasticsearch
Elasticsearch2 天前
使用 NVIDIA NeMo Retriever、Unstructured 和 Elasticsearch 处理非结构化数据
elasticsearch