ElasticSearch简介及常用操作指南

news2025/5/31 20:57:01

一. ElasticSearch简介

ElasticSearch 是一个基于 Lucene 构建的开源、分布式、RESTful 风格的搜索和分析引擎。

ElasticSearch

1. 核心功能

  • 强大的搜索能力

    • 它能够提供全文检索功能。例如,在海量的文档数据中,可以快速准确地查找到包含特定关键词的文档。这在处理诸如电商产品目录(可以按照产品名称等文本内容搜索)、新闻文章数据库(能依据标题或正文关键词检索新闻)等场景下非常有用。
    • 支持多种搜索方式,如简单搜索、短语搜索、模糊搜索等。模糊搜索可以处理用户输入的拼写错误等情况,并且还能进行通配符搜索,像在搜索框中输入 “comput*” 就可以匹配到 “computer”“computing” 等词。
  • 数据分析功能强大

    • 可以执行聚合操作,对数据进行统计分析。比如在电商销售数据中,通过聚合操作可以计算出不同产品的销售额总和、平均销售额,或者按地域统计订单数量等。这些聚合操作可以帮助企业进行商业智能分析,了解业务发展趋势和用户行为模式。
  • 高性能

    • ElasticSearch 采用倒排索引的原理,这是一种非常高效的文本检索数据结构。并且它是分布式系统,能够将数据分散存储在多个节点上,这样在搜索和分析时可以充分利用多台服务器的资源,提高查询速度。例如,在一个大型的互联网公司中,面对海量的用户日志数据,ElasticSearch 可以快速响应查询请求,几乎不影响用户体验。
  • 高扩展性和高可用性

    • 它很容易进行横向扩展,可以通过添加新的节点来增加系统的处理能力和存储容量。同时,它具有副本机制,可以确保数据的安全性和高可用性。即使某个节点出现故障,数据也不会丢失,其他节点可以继续提供服务。这对于关键业务系统,如金融交易系统中的数据存储和查询来说至关重要,能够保证业务的连续性。

2. 应用场景

  • 日志分析

    • 在企业的 IT 基础设施中,服务器、应用程序等会产生大量的日志。ElasticSearch 可以收集、存储和分析这些日志数据,帮助运维人员快速定位系统故障。例如,通过分析 Web 服务器的日志,可以找出访问量高峰时段、响应时间过长的页面等信息,从而优化服务器性能。
  • 企业搜索

    • 可以将企业的内部文档(如员工手册、项目文档等)、知识库等数据整合到 ElasticSearch 中。员工可以通过简单易用的搜索界面快速找到所需信息,提高工作效率。比如,在大型律师事务所中,律师可以利用它快速检索相关的法律案例文件。
  • 电商搜索和推荐系统

    • 对于电商平台,ElasticSearch 可以提供强大的商品搜索功能。它能够根据用户的搜索词,快速返回匹配的商品列表,并且结合用户的行为数据(如浏览历史、购买记录等)进行个性化推荐。例如,当用户搜索 “运动鞋” 时,可以准确地展示各种品牌、型号的运动鞋,并且根据用户的偏好推荐相关的篮球鞋、跑步鞋等。

二. 常用操作命令

1. 创建索引

PUT http://<主机IP地址>:9200/<索引名称>

PUT http://10.0.1.2:9200/company

{
    "settings": {
        // 将主分片数量
        "number_of_shards": 10,
        // 设置副本数量
        "number_of_replicas": 1
    }
}

2. 检索索引信息

GET http://<主机IP地址>:9200/<索引名称>

3. 删除索引信息

DELETE http://<主机IP地址>:9200/<索引名称>

4. 文档操作

4.1 新增文档,并指定ID

POST http://<主机IP地址>:9200/<索引名称>/_doc/<文档ID>

POST http://10.0.1.2:9200/company/_doc/123412341415

{
    "company_name": "百胜中国有限公司",
    "legal_name": "张三",
    "tags": ["供应链管理", "餐饮服务"]
}
4.2 新增文档,不指定文档ID,系统采用随机文档ID

POST http://<主机IP地址>:9200/<索引名称>/_doc

POST http://10.0.1.2:9200/company/_doc

{
    "company_name": "百胜中国有限公司",
    "legal_name": "张三",
    "tags": ["供应链管理", "餐饮服务"]
}
4.3 获取指定文档信息

GET http://<主机IP地址>:9200/<索引名称>/_doc/<文档ID>

GET http://10.0.1.2:9200/company/_doc/123412341415
4.4 更新文档

PUT http://<主机IP地址>:9200/<索引名称>/_doc/<文档ID>

PUT http://10.0.1.2:9200/company/_doc/123412341415

{   
    "doc": {
        "legal_name": "李四",
        "tags": ["供应链管理", "餐饮服务", "数字供应链"]
    }
}
4.5 删除文档

DELETE http://<主机IP地址>:9200/<索引名称>/_doc/<文档ID>

5. 查看所有的文档列表

GET http://<主机IP地址>:9200/_cat/indices?v

GET http://10.0.1.2:9200/_cat/indices?v

6. 查询

6.1 匹配查询

GET http://<主机IP地址>:9200/<索引名称>/_search

GET http://10.0.1.2:9200/company/_search?pretty

{
    "query": {
        "match": {
            "legal_name": "李四"
        }
    }   
}

match查询:

  1. 作用:用于在文本字段中执行全文检索,查找包含指定词语或短语的文档
  2. 使用场景:适用于执行基于文本内容的搜索,比如在公司名称、法人代表查找特定关键词。
6.2 范围查询

GET http://<主机IP地址>:9200/<索引名称>/_search

{
  "query": {
       "range": {
            "age": {
                "gte": 20,
                "lte": 35
            }
       }
   },
   // 设置查询返回数量
   size: <返回数据量>
}
  • range: 指定进行范围查询
  • age: 指定要进行查询的字段名称(属性名称)
  • gte: 表示大于等于某个值
  • lte: 表球小于等于某个值
6.3 布尔查询

GET http://<主机IP地址>:9200/<索引名称>/_search

{
  "query": {
       "bool": {
            "must": [{
                "match": {
                    "company_name": "生物科技"  
                },
            }, {
                "range": {
                    "establish_year": {
                        "gte": 3
                    }
                }
            }],
            "must_not": [{
                "match": {
                    "status": "注销"
                }
            }],
            "should": [{
                "match": {
                    "province": "广东省"
                }
            }],  
            "minimum_should_match": 1
       }
   },
   // 设置查询返回数量
   size: <返回数据量>
}

上述内容用于构建复杂“Elastic”查询逻辑, 包括以下几个部分:

  • must: 指定了所有这些条件必须满足的查询子句;
  • must_not: 指定了文档不能匹配的条件;
  • should: 指定了一个可选条件,如果满足则增加文档的匹配分数;
  • minimum_should_match: 指定了至少满足几个“should”查询条件,默认是0。
6.4 分页查询

GET http://<主机IP地址>:9200/<索引名称>/_search

{
  "query": {
       // 查询条件
       "range": {
            "age": {
                "gte": 20,
                "lte": 35
            }
       }
   },
   // 从第一个文档开始,类似于MySQL的offset
   from: 0,
   // 设置查询返回数量
   size: <返回数据量>
}

使用from和size参数来实现分页:

  • from: 指定了查询结果中的偏移量,类似于MySQL的offset;
  • size: 指定了每页返回的文档数
6.5 多字段匹配查询

多字段查询可使用的匹配类型为multi_match,multi_match与match类似,不同的是它可以在多个字段中进行查询。

GET http://<主机IP地址>:9200/<索引名称>/_search

{
  "query": {
       // 查询条件
       "multi_search": {
            "query": "医疗器械",
            "fields": [
                "company_name",
                "business_scope"
            ]
       }
   },
   // 从第一个文档开始,类似于MySQL的offset
   from: 0,
   // 设置查询返回数量
   size: <返回数据量>
}
6.6 关键字精准查询

使用term(单关键字)/terms(多关键字)查询,精确的关键词匹配查询,不对查询条件进行分词。

GET http://<主机IP地址>:9200/<索引名称>/_search


1. 单关键词查询

{
    "query": {
        "term": {
            "legal_name": "张三"
        }
    }   
}

2. 多关键词查询

{
    "query": {
        "terms": {
            "legal_name": ["张三", "李四"]
        }
    }   
}
6.7 指定字段查询

默认情况下,Elasticsearch在搜索的结果中,会将文档中保存到在source的所有字段都返回,如果只想返回某些字段,可以添加source进行过滤。

GET http://<主机IP地址>:9200/<索引名称>/_search


{
    "_source": ["company_name", "legal_name", "credit_code", "business_scope"],
    "query": {
        "term": {
            "legal_name": "张三"
        }
    }   
}
6.8 过滤字段查询

使用includes和excludes两个字段

  • includes:来指定想要显示的字段
  • excludes:来指定不想要显示的字段

GET http://<主机IP地址>:9200/<索引名称>/_search

{
    "_source": {
        "includes": ["company_name", "legal_name", "credit_code", "business_scope"],
        "excludes": ["create_time", "update_time"]
    },
    "query": {
        "term": {
            "legal_name": "张三"
        }
    }   
}
6.9 模糊查询

返回包含与搜索字词相似的字词的文档可以使用“fuzzy”字段。为了找到相似的术语,fuzzy查询会在指定的编辑距离内创建一组搜索词的所有可能的变体或扩展,然后查询返回每个扩展的完全匹配。

GET http://<主机IP地址>:9200/<索引名称>/_search

{
    "_source": {
        "includes": ["company_name", "legal_name", "credit_code", "business_scope"],
        "excludes": ["create_time", "update_time"]
    },
    "query": {
        "fuzzy": {
            // 匹配字段名称
            "legal_name": {
                "value": "张三",
                // 编辑距离
                "fuzziness": 2
            }
        }
    }   
}
6.9 查询并排序输出

使用sort字段对返回的结果进行排序,通过order指定排序方式,desc是降序,asc是升序。

GET http://<主机IP地址>:9200/<索引名称>/_search

{
    "_source": {
        "includes": ["company_name", "legal_name", "credit_code", "business_scope"],
        "excludes": ["create_time", "update_time"]
    },
    "query": {
        "term": {
            "legal_name": "张三"
        }
    },
    "sort": [{
        "company_name": {
            "order": "desc"
        }
    }, {
        "province": {
            "order": "asc"
        }
    }]
}

三. ElasticSearch索引内容

查看所有索引

向Elasticsearch服务器发送GET请求 http://127.0.0.1:9200/_cat/indices?v 这里请求路径中的_cat 表示查看的意思,indices 表示索引,所以整体含义就是查看当前 ES服务器中的所有索引,就像 MySQL 中的 show tables。返回数据表的含义如下表:

表头含义
health当前服务器的健康状态
status索引打开、关闭状态
index索引名称
uuid索引统一编号
pri主分片数量
rep副本数量
docs.count可用文档数量(总记录数)
docs.deleted文档删除状态(逻辑删除)
store.size主分片和副分片整体占空间大小
pri.store.size主分片占用空间大小

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2391832.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

纤维组织效应偏斜如何影响您的高速设计

随着比特率继续飙升&#xff0c;光纤编织效应 &#xff08;FWE&#xff09; 偏移&#xff0c;也称为玻璃编织偏移 &#xff08;GWS&#xff09;&#xff0c;正变得越来越成为一个问题。今天的 56GB/s 是高速路由器中最先进的&#xff0c;而 112 GB/s 指日可待。而用于个人计算机…

Rust使用Cargo构建项目

文章目录 你好&#xff0c;Cargo&#xff01;验证Cargo安装使用Cargo创建项目新建项目配置文件解析默认代码结构 Cargo工作流常用命令速查表详细使用说明1. 编译项目2. 运行程序3.快速检查4. 发布版本构建 Cargo的设计哲学约定优于配置工程化优势 开发建议1. 新项目初始化​2. …

Python训练营打卡Day39

DAY 39 图像数据与显存 知识点回顾 1.图像数据的格式&#xff1a;灰度和彩色数据 2.模型的定义 3.显存占用的4种地方 a.模型参数梯度参数 b.优化器参数 c.数据批量所占显存 d.神经元输出中间状态 4.batchisize和训练的关系 作业&#xff1a;今日代码较少&#xff0c;理解内容…

UE5蓝图中播放背景音乐和使用代码播放声音

UE5蓝图中播放背景音乐 1.创建背景音乐Cube 2.勾选looping 循环播放背景音乐 3.在关卡蓝图中 Event BeginPlay-PlaySound2D Sound选择自己创建的Bgm_Cube 蓝图播放声音方法二&#xff1a; 使用代码播放声音方法一 .h文件中 头文件引用 #include "Kismet/GameplayS…

AI 赋能数据可视化:漏斗图制作的创新攻略

在数据可视化的广阔天地里&#xff0c;漏斗图以其独特的形状和强大的功能&#xff0c;成为展示流程转化、分析数据变化的得力助手。传统绘制漏斗图的方式往往需要耗费大量时间和精力&#xff0c;对使用者的绘图技能和软件操作熟练度要求颇高。但随着技术的蓬勃发展&#xff0c;…

用 Python 模拟下雨效果

用 Python 模拟下雨效果 雨天别有一番浪漫情怀&#xff1a;淅淅沥沥的雨滴、湿润的空气、朦胧的光影……在屏幕上也能感受下雨的美妙。本文将带你用一份简单的 Python 脚本&#xff0c;手把手实现「下雨效果」动画。文章深入浅出&#xff0c;零基础也能快速上手&#xff0c;完…

C#对象集合去重的一种方式

前言 现在AI越来越强大了&#xff0c;有很多问题其实不需要在去各个网站上查了&#xff0c;直接问AI就好了&#xff0c;但是呢&#xff0c;AI给的代码可能能用&#xff0c;也可能需要调整&#xff0c;但是自己肯定是要会的&#xff0c;所以还是总结一下吧。 问题 如果有一个…

在ROS2(humble)+Gazebo+rqt下,实时显示仿真无人机的相机图像

文章目录 前言一、版本检查检查ROS2版本 二、步骤1.下载对应版本的PX4(1)检查PX4版本(2)修改文件名(3)下载正确的PX4版本 2.下载对应版本的Gazebo(1)检查Gazebo版本(2)卸载不正确的Gazebo版本(3)下载正确的Gazebo版本 3.安装bridge包4.启动 总结 前言 在ROS2的环境下&#xff…

github双重认证怎么做

引言 好久没登陆github了&#xff0c; 今天登陆github后&#xff0c;提醒进行2FA认证。 查看了github通知&#xff0c;自 2023 年 3 月起&#xff0c;GitHub 要求所有在 GitHub.com 上贡献代码的用户启用一种或多种形式的双重身份验证 (2FA)。 假如你也遇到这个问题&#xf…

数据的类型——认识你的数据

第02篇&#xff1a;数据的类型——认识你的数据 写在前面&#xff1a;嗨&#xff0c;大家好&#xff01;我是蓝皮怪。在上一篇文章中&#xff0c;我们聊了统计学的基本概念&#xff0c;今天我们来深入了解一个非常重要的话题——数据的类型。你可能会想&#xff1a;"数据就…

第五十二节:增强现实基础-简单 AR 应用实现

引言 增强现实(Augmented Reality, AR)是一种将虚拟信息叠加到真实世界的技术,广泛应用于游戏、教育、工业维护等领域。与传统虚拟现实(VR)不同,AR强调虚实结合,用户无需完全沉浸到虚拟环境中。本文将通过Python和OpenCV库,从零开始实现一个基础的AR应用:在检测到特定…

LLaMaFactory 微调QwenCoder模型

步骤一&#xff1a;准备LLamaFactory环境 首先,让我们尝试使用github的方式克隆仓库: git config --global http.sslVerify false && git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git # 创建新环境&#xff0c;指定 Python 版本&#xff08;以 3.…

【最新版】Arduino IDE的安装入门Demo

1、背景说明 1、本教程编写日期为2025-5-24 2、Arduino IDE的版本为&#xff1a;Arduino IDE 2.3.6 3、使用的Arduino为Arduino Uno 1、ArduinoIDE的安装 1、下载。网址如下&#xff1a;官网 2、然后一路安装即可。 期间会默认安装相关驱动&#xff0c;默认安装即可。 3、安…

不起火,不爆炸,高速摄像机、数字图像相关DIC技术在动力电池新国标安全性能测试中的应用

2026年7月1日&#xff0c;我国将正式实施GB38031-2025《电动汽车用动力蓄电池安全要求》——这项被称为“史上最严电池安全令”的新国标&#xff0c;首次将“热失控不蔓延、不起火、不爆炸”从企业技术储备上升为强制性要求&#xff0c;标志着电池安全进入“零容忍”时代&#…

thinkadmin中使用layui日期选择器,数据库存储时间戳

form.html <div class="layui-form-item label-required-prev" id="jiezhi_time-div">

WSL中ubuntu通过Windows带代理访问github

WSL中ubuntu通过Windows带代理访问github 前言: WSL是Windows下的ubuntu访问工具&#xff0c;目前无法访问外网&#xff0c;因此需要配置一下。 步骤一 代理中进行如下设置: 步骤二 ubuntu22.04中修改配置 使用如下命令获取IP地址&#xff1a; ip route | grep default | aw…

RISC-V特权模式及切换

1 RISC-V特权模式基本概念 1.1 RISC-V特权模式介绍 RISC-V 指令集架构&#xff08;ISA&#xff09;采用多特权级别设计作为其核心安全机制&#xff0c;通过层次化的权限管理实现系统资源的隔离与保护。该架构明确定义了四个层次化的特权模式&#xff0c;按照权限等级由高至低…

【深度学习】11. Transformer解析: Self-Attention、ELMo、Bert、GPT

Transformer 神经网络 Self-Attention 的提出动机 传统的循环神经网络&#xff08;RNN&#xff09;处理序列信息依赖时间步的先后顺序&#xff0c;无法并行&#xff0c;而且在捕捉长距离依赖关系时存在明显困难。为了解决这些问题&#xff0c;Transformer 引入了 Self-Attent…

4060显卡什么水平 4060显卡参数介绍

NVIDIA的GeForce RTX 40系列显卡基于最新的Ada Lovelace架构&#xff0c;提供了前所未有的图形处理能力和效率。其中&#xff0c;RTX 4060定位中高端市场&#xff0c;针对那些寻求卓越性能同时又注重成本效益的用户群体。那么&#xff0c;4060显卡什么水平呢&#xff1f;本文将…

技术为器,服务为本:AI时代的客服价值重构

在智能化浪潮中&#xff0c;大语言模型的出现为客户服务行业注入了全新动能。然而技术创新的价值不在于技术本身&#xff0c;而在于其赋能服务的深度与广度。AI对于我们来说&#xff0c;如同发动机之于汽车&#xff0c;重要的不是引擎参数&#xff0c;而是整车带给用户的驾驶体…