学习总结录 学习总结录
首页
归档
分类
标签
  • Java基础
  • Java集合
  • MySQL
  • Redis
  • JVM
  • 多线程
  • 计算机网络
  • 操作系统
  • Spring
  • Kafka
  • Elasticsearch
  • Python
  • 面试专题
  • 案例实践
  • 工具使用
  • 项目搭建
  • 服务治理
  • ORM框架
  • 分布式组件
  • MiniSpring
  • 设计模式
  • 算法思想
  • 编码规范
友链
关于
GitHub (opens new window)
首页
归档
分类
标签
  • Java基础
  • Java集合
  • MySQL
  • Redis
  • JVM
  • 多线程
  • 计算机网络
  • 操作系统
  • Spring
  • Kafka
  • Elasticsearch
  • Python
  • 面试专题
  • 案例实践
  • 工具使用
  • 项目搭建
  • 服务治理
  • ORM框架
  • 分布式组件
  • MiniSpring
  • 设计模式
  • 算法思想
  • 编码规范
友链
关于
GitHub (opens new window)
  • Java基础

  • Java集合

  • MySQL

  • Redis

  • JVM

  • 多线程

  • 计算机网络

  • Spring

  • Kafka

  • Elasticsearch

    • ElasticSearch基本概念
    • 文档基本操作
    • 倒排索引
    • 分词器
    • Mapping和常见字段类型
    • Index Template&Dynamic Template
    • Elasticsearch聚合分析简介
    • 基于词项和基于全文的搜索
    • 结构化搜索
    • 搜索的相关性算分
    • 单字符串多字段查询
    • SearchTemplate 和 Index Alias 查询
      • 一、SearchTemplate
      • 二、Index Alias
      • 参考
    • Function Score Query 优化算分
    • Term&Phrase Suggester
    • 自动补全于基于上下文的提示
  • Python

  • 面试专题

  • 知识库
  • Elasticsearch
旭日
2023-06-06
目录

SearchTemplate 和 Index Alias 查询

# 一、SearchTemplate

ES对相关性和查询性能都非常重要,对于一个业务的查询,可能会有专门的开发人员去书写业务逻辑,但也同时需要搜索工程师或者性能工程师来优化我们DSL语句,因此DSL语句和业务解耦是非常重要的。

POST _scripts/shopping
{
  "script": {
    "lang": "mustache",
    "source": {
      "_source": [
        "title","category"
      ],
      "size": 20,
      "query": {
        "multi_match": {
          "query": "{{q}}",
          "fields": ["title","category"]
        }
      }
    }
  }
}

通过这样的语句,我们在脚本下写入了一个id为shopping的查询脚本,这个脚本主要根据title和category字段进行算分。

GET _scripts/shopping

POST shopping/_search/template
{
    "id":"shopping",
    "params": {
        "q": "小米"
    }
}

对shopping索引进行查询的时候,我们就可以使用这个脚本,传入指定的参数即可调用脚本。

# 二、Index Alias

数据是存储在某一个索引下,我们可以通过给索引取别名,通过对别名操作,间接查询原索引。

PUT movies-2019/_doc/1
{
  "name":"the matrix",
  "rating":5
}

PUT movies-2019/_doc/2
{
  "name":"Speed",
  "rating":3
}

POST _aliases
{
  "actions": [
    {
      "add": {
        "index": "movies-2019",
        "alias": "movies-latest"
      }
    }
  ]
}

POST movies-latest/_search
{
  "query": {
    "match_all": {}
  }
}

我们在moves-2019索引下创建了两条数据,然后用movies-latest来作为新的别名,通过对这个新的别名操作就可以进行查询。

POST _aliases
{
  "actions": [
    {
      "add": {
        "index": "movies-2019",
        "alias": "movies-lastest-highrate",
        "filter": {
          "range": {
            "rating": {
              "gte": 4
            }
          }
        }
      }
    }
  ]
}

POST movies-lastest-highrate/_search
{
  "query": {
    "match_all": {}
  }
}

现在我们给moves-2019索引取了一个新的名字,并且这个索引下,评分必须是大于4的,相当于用这种方法对原索引的数据进行了一个归类。

# 参考

Elasticsearch 核心技术与实战 (opens new window)

#Elasticsearch
上次更新: 2024/06/29, 15:13:44
单字符串多字段查询
Function Score Query 优化算分

← 单字符串多字段查询 Function Score Query 优化算分→

最近更新
01
基础概念
10-31
02
Pytorch
10-30
03
Numpy
10-30
更多文章>
Theme by Vdoing | Copyright © 2021-2024 旭日 | 蜀ICP备2021000788号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式