首页/新闻资讯/正文详情

安装Elasticsearch 全文搜索/大数据分析

发布时间:2026/9/26 7:00:02 来源:云帆数科 栏目:资讯中心
安装Elasticsearch 全文搜索/大数据分析
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎基于RESTful web接口。Elasticsearch是用Java开发的并作为Apache许可条款下的开放源码发布是当前流行的企业级搜索引擎。设计用于云计算中能够达到实时搜索稳定可靠快速安装使用方便。Elasticsearch的应用场景一个线上商城系统用户需要搜索商城上的商品。在这里你可以用es存储所有的商品信息和库存信息用户只需要输入”空调”就可以搜索到他需要搜索到的商品。一个运行的系统需要收集日志用这些日志来分析、挖掘从而获取系统业务未来的趋势。你可以用logstashELK中的一个产品elasticsearch/logstash/kibana收集、转换你的日志并将他们存储到es中。一旦数据到达es中就你可以在里面搜索、运行聚合函数等操作来挖掘任何你感兴趣的信息。如果你有想基于大量数据数百万甚至数十亿的数据快速调查、分析并且要将分析结果可视化的需求。你可以用es来存储你的数据用kibana构建自定义的可视化图形、报表为业务决策提供科学的数据依据。安装ElasticSearch版本说明ES5 需要 Java 8 及以上的版本。ES7 开始内置了 Java 环境首先确认下jdk有没有安装java -version下载源文件解压重新建一个用户将目录的所属组修改为此用户因为 elasticsearch 无法用 root 用户启动。wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.0.tar.gz tar zxvf elasticsearch-6.3.0.tar.gz useradd elasticsearch passwd elasticsearch chown -R elasticsearch:elasticsearch elasticsearch-6.3.0 cd elasticsearch-6.3.0 ./bin/elasticsearch // 启动 ./bin/elasticsearch -d //后台启动 cd config vim jvm.options # 修改参数如下(服务器小不配大容量) -Xms256m -Xmx256m可能存在问题Exception in thread main java.nio.file.AccessDeniedException: /usr/local/src/elasticsearch-6.3.0/config/jvm.options at sun.nio.fs.UnixException.translateToIOException(UnixException.java:84) at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102) at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107) at sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:214) at java.nio.file.Files.newByteChannel(Files.java:361) at java.nio.file.Files.newByteChannel(Files.java:407) at java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:384) at java.nio.file.Files.newInputStream(Files.java:152) at org.elasticsearch.tools.launchers.JvmOptionsParser.main(JvmOptionsParser.java:58)报这个错是因为用户的权限不足因此在配置和启动ElasticSearch节点的时候要注意给用户赋予对应的权限chown -R myuser:myuser /usr/local/src/elasticsearch-6.3.0连接Elasticsearch1、Elasticsearch开启之后可以直接通过http://127.0.0.1:9200/查看基本信息。{ name: iEX7av1, cluster_name: elasticsearch, cluster_uuid: 8TMqWFwnTLiBlRKtU7a8YQ, version: { number: 6.3.0, build_flavor: default, build_type: tar, build_hash: 424e937, build_date: 2018-06-11T23:38:03.357887Z, build_snapshot: false, lucene_version: 7.3.1, minimum_wire_compatibility_version: 5.6.0, minimum_index_compatibility_version: 5.0.0 }, tagline: You Know, for Search }安装中文分词 elasticsearch-analysis-ikik有两种分词模式ik_max_word,和ik_smart模式ik_max_word: 会将文本做最细粒度的拆分比如会将“中华人民共和国国歌”拆分为“中华人民共和国,中华人民,中华,华人,人民共和国,人民,人,民,共和国,共和,和,国国,国歌”会穷尽各种可能的组合ik_smart: 会做最粗粒度的拆分比如会将“中华人民共和国国歌”拆分为“中华人民共和国,国歌”。索引时为了提供索引的覆盖范围通常会采用ik_max_word分析器会以最细粒度分词索引搜索时为了提高搜索准确度会采用ik_smart分析器会以粗粒度分词。使用ik_max_word会占用更多的存储空间#在线安装 ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.3.0/elasticsearch-analysis-ik-6.3.0.zip #本地安装 ./bin/elasticsearch-plugin install file:///usr/local/src/elasticsearch-analysis-ik-6.3.0.zip安装好后 重启es会看到 加载了 ik分词了安装完毕后发现在ES的安装目录下的plugins目录下多了一个analysis-ik目录内容是ik的zip包解压后根目录下的所有文件一共是5个jar文件和1个properties配置文件另外ES的安装目录下的config目录下多了一个analysis-ik目录内容是ik的zip包解压后根目录下的config目录下所有文件用于放置ik的自定义词库可视化Elasticvue平台Windows / Mac / Linux 三端原生桌面 App 浏览器插件费用完全免费、开源 MIT 协议无任何功能阉割核心能力完美适配你的阿里云 ES支持账号密码认证、HTTPS、阿里云公网 ES 连接、IP 白名单环境索引可视化浏览、文档表格 / JSON 双视图、单条文档增删改查DSL 编辑器语法高亮、自动格式化、保存常用查询语句Mapping 查看 / 编辑、集群健康监控、分片状态、批量 Bulk 操作支持 ES 7.x/ 8.x 全版本兼容 OpenSearch适合人群日常查 CRM 客户文档、调试 DSL、多环境集群切换90% 开发者首选缺点重度集群监控图表不如 Kibana 专业安装KibanaKibana是一个针对Elasticsearch的开源分析及可视化平台用来搜索、查看交互存储在Elasticsearch索引中的数据。安装Kibana要装与ES相同的版本wget https://artifacts.elastic.co/downloads/kibana/kibana-6.3.0-linux-x86_64.tar.gz tar -zxvf kibana-6.3.0-linux-x86_64.tar.gz cd kibana-6.3.0-linux-x86_64 #启动Kibana ./bin/kibanahttp://localhost:5601访问web页面使用POSTMAN工具发送PUT请求创建ES的基本用法ES以RESTFul风格来命名API的, 其API的基本格式如下http://ip:port/索引/类型/文档idES的动作是以http方法来决定的: 常用的http方法: GET/PUT/POST/DELETEes支持多字段结构例如我们将常用的搜索条件和排序字段(销量时间)配置到mappings.properties中{ settings:{ number_of_shards: 3, number_of_replicas: 1 }, mappings:{ man:{ properties:{ word_count:{ type: integer }, author:{ type: keyword }, title:{ type: text }, publish_date:{ type: date, format: yyyy-MM-dd HH:mm:ss || yyyy-MM-dd || epoch_millis } } } } }如下图观察返回结果已经成功。插入文档PUT 127.0.0.1:9200/people/man{ name: chenjie, country: China, age: 30, date: 1994-09-27 }修改文档POST 127.0.0.1:9200/people/man/1/_update{ doc:{ name:chenjie_update } }删除文档DELETE 127.0.0.1:9200/people/man/1批量操作批量操作 bulk支持在一次 API 调用中对不同的索引进行操作支持四种类型操作Index/Create/Update/Delete可以在 URI 中指定 Index也可以在请求的 Payload 中进行单条操作失败并不会影响其他操作返回结果包括了每一条操作执行的结果测试命令POST _bulk { index : { _index : test, _id : 1 } } { field1 : value1 } { delete : { _index : test, _id : 2 } } { create : { _index : test2, _id : 3 } } { field1 : value3 } { update : {_id : 1, _index : test} } { doc : {field2 : value2} }使用PHPAPi构建和查询创建表和测试数据索引相当于MySQL中的表文档相当于 MySQL 中的行记录。程序在新增/修改/删除记录的时候调用ES的接口对ES文档进行同步的新增/修改/删除操作。同步构建有很大缺陷。比如ES宕机或者ES处理文档消耗了很长的时间影响用户的体验。可以使用KaFka中间件来进行异步构建文档。在 composer.json 文件中引入 elasticsearch-php{ require: { elasticsearch/elasticsearch: ~6.0 } }CREATE TABLE articles ( id INT NOT NULL PRIMARY KEY auto_increment, title VARCHAR ( 200 ) NOT NULL COMMENT 标题, content text COMMENT 内容 ); INSERT INTO articles ( title, content ) VALUES ( Laravel 测试1, Laravel 测试文章内容1 ), ( Laravel 测试2, Laravel 测试文章内容2 ), ( Laravel 测试3, Laravel 测试文章内容3 );实例化require ./vendor/autoload.php; use Elasticsearch\ClientBuilder; $client ClientBuilder::create()-build();elasticsearch的动态性质在添加第一个文档的时候自动创建了索引和一些默认设置。创建索引$params[index] articles_index; $params[body][settings][number_of_shards] 2; $params[body][settings][number_of_replicas] 0; $client-indices()-create($params);将文档加入索引foreach ($lists as $row) { $params [ body [ id $row[id], title $row[title], content $row[content] ], id article_ . $row[id], //maping db id index articles_index, type articles_type ]; $client-index($params); }从索引中获取文档$params [index articles_index, type articles_type, id articles_1]; $res $client-get($params); print_r($res);删除索引$params [ index articles_index ]; $res $client-indices()-delete($params); print_r($res);搜索文档,如果需要获取更多明细信息可以根据mysql表ID获取?php $params [index articles_index, type articles_type]; $params[body][query][match][content] Laravel; $params[body][size] 10; $params[body][from] 200; $params[body][sort] [content [order desc]]; $res $client-search($params); print_r($res); //相当于sql语句select * from articles where contentLaravel limit 200,10 order by content desc;从索引中删除文档$params [index articles_index, type articles_type, id articles_1]; $res $client-delete($params); print_r($res);Elasticsearch更新和删除文档的过程。删除和更新也都是写操作但是Elasticsearch中的文档是不可变的因此不能被删除或者改动以展示其变更磁盘上的每个段都有一个相应的.del文件。当删除请求发送后文档并没有真的被删除而是在.del文件中被标记为删除。该文档依然能匹配查询但是会在结果中被过滤掉。当段合并时在.del文件中被标记为删除的文档将不会被写入新段。在新的文档被创建时Elasticsearch会为该文档指定一个版本号当执行更新时旧版本的文档在.del文件中被标记为删除新版本的文档被索引到一个新段。旧版本的文档依然能匹配查询但是会在结果中被过滤掉。ElasticSearch搜索term和terms的区别在查询的字段只有一个值的时候应该使用term而不是terms在查询字段包含多个的时候才使用terms(类似于sql中的in、or)使用terms语法JSON中必须包含数组。第一种(单个值,term){ query:{ bool:{ must:[ { range:{ update_time:{ gt:1488556800000 } } }, { term:{ lang:1 } }, { terms:{ domain:[ dailymasala.co, goldenmob.com ] } }, { prefix:{ user_id:errVideo_setInterval_ } } ] } }, from:0, size:10 }第二种(数组形式,terms){ query: { bool: { must: [ { range: { update_time: { gt: 1488556800000 } } }, { terms: { lang: [1] } }, { terms: { domain: [ dailymasala.co, goldenmob.com ] } }, { prefix: { user_id: errVideo_setInterval_ } } ] } }, from: 0, size: 10 }elasticsearch 中term与match区别term是代表完全匹配也就是精确查询搜索前不会再对搜索词进行分词所以我们的搜索词必须是文档分词集合中的一个。比如说我们要找标题为北京奥运的所有文档match查询会先对搜索词进行分词,分词完毕后再逐个对分词结果进行匹配因此相比于term的精确搜索match是分词匹配搜索。要搜索词的分词集合中的一个或多个存在于文档中即可例如当我们搜索中国杭州搜索词会先分词为中国和杭州,只要文档中包含搜索和杭州任意一个词都会被搜索到。对于match搜索可以按照分词后的分词集合的or或者and进行匹配默认为orcurl -XGET http://localhost:9200/index/doc/_search?pretty -d { query: { match: { content: { query: 中国世界, operator: and } } } }ES性能优化{ settings:{ number_of_shards: 3, number_of_replicas: 1, index.store.type: niofs, index.query.default_field: content, index.unassigned.node_left.delayed_timeout: 5m, }, mappings:{ man:{ dynamic:true, _all:{enabled:false}, properties:{ } } } }安全控制可以使用apache/nginx的http认证在 Elasticsearch 中写入和打开一个新段的轻量的过程叫做refresh。 默认情况下每个分片会每秒自动刷新一次。这就是为什么我们说 Elasticsearch 是近实时搜索: 文档的变化并不是立即对搜索可见但会在一秒之内变为可见.更新延迟问题:搜索时加上?refreshwait_for表示如果1秒内有请求立即更新并可见。

相关推荐

MAA自动公招终极指南:如何轻松实现《明日方舟》公开招募自动化
MAA自动公招终极指南:如何轻松实现《明日方舟》公开招募自动化

MAA自动公招终极指南:如何轻松实现《明日方舟》公开招募自动化 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手,全日常一键长草!| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: htt… · 2026/9/26 6:59:09

YOLOv8在管道泄漏检测中的应用与优化策略
YOLOv8在管道泄漏检测中的应用与优化策略

1. 项目概述:YOLOv8在管道泄漏检测中的核心价值 管道泄漏检测一直是工业设施维护中的关键挑战。传统人工巡检方式效率低下且容易遗漏微小泄漏点,而基于计算机视觉的自动化检测系统能实现724小时不间断监控。YOLOv8作为当前最先进的目标检测算法之一&… · 2026/8/2 21:52:10

AI驱动多语言SEO优化:语义地图与本地化实践
AI驱动多语言SEO优化:语义地图与本地化实践

1. 多语言社区SEO的痛点与机遇 当运营一个面向多族裔用户的社区平台时,传统SEO策略往往会遇到"水土不服"的问题。我曾负责过一个支持12种语言的职业社交平台优化项目,发现西班牙语用户搜索"trabajo remoto"(远程工作&… · 2026/7/30 4:08:50

比亚迪闪充技术拆解:BMS分级保护、热管理链路与电网协同如何实现
比亚迪闪充技术拆解:BMS分级保护、热管理链路与电网协同如何实现

一聊到比亚迪闪充,身边总有两种声音:要么担心那么大的充电电流直接把电池“充伤”,要么担心一堆桩同时开工把电网“拉崩”。如果你拆开看,会发现“不伤电池、不伤电网”根本不是一个营销话术,而是三个层面联合设计的结… · 2026/9/26 7:00:01

基于LHS与响应面的多目标优化:MATLAB工程实现指南
基于LHS与响应面的多目标优化:MATLAB工程实现指南

1. 为什么偏偏是LHS响应面多目标优化这一套组合先聊点实际的。做工程优化的人,最头疼的往往不是优化算法本身,而是目标函数的求解成本。可能是CFD仿真跑一次要几个小时,可能是有限元模型算一次要半小时,你再牛的非线性规划算法&am… · 2026/9/26 7:00:01

SpringBoot集成Swagger完整指南:从配置到生产环境安全控制
SpringBoot集成Swagger完整指南:从配置到生产环境安全控制

1. 为什么项目里必须有一个接口文档工具先讲个场景,估计不少人都经历过。前后端联调的时候,后端同学甩过来一个Word文档,里面写着接口地址、参数列表,然后大家开始对着文档调接口。调着调着发现参数名对不上,文档里写的… · 2026/9/26 7:00:01

金融服务业技术实现需明确业务与技术约束
金融服务业技术实现需明确业务与技术约束

我无法基于当前输入生成符合要求的博文。原因如下:项目标题为"financial-services",这是一个高度泛化的行业领域术语,本身不具备具体项目特征(如无技术栈、无实现目标、无业务场景限定);项目正文… · 2026/9/26 7:00:01

美赛代码包拆解:评价预测优化图论与智能算法实战指南
美赛代码包拆解:评价预测优化图论与智能算法实战指南

简介:这份资源面向参加数学建模竞赛(尤其是美赛)的学生与研究者,系统整理了各常见题型的参考代码,覆盖从线性回归等基础方法到遗传算法改进神经网络等进阶模型,适合需要快速搭建求解框架、对照复现算法的备… · 2026/9/26 7:00:01

光伏局部遮阴下PSO-MPPT控制Simulink仿真模型
光伏局部遮阴下PSO-MPPT控制Simulink仿真模型

做光伏发电的人应该都有过这种经历:明明大晴天,阵列输出功率却突然掉下去一大截,一看监控曲线,不是逆变器报警,而是东边的楼影正好压在一组组件上。这个问题在屋顶分布式、山地电站和农光互补项目里特别常见。组件局部… · 2026/9/26 6:59:49

数据库课后习题答案别硬背:当测试用例集刷,效率翻倍
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍

简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21

OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40

向下兼容与向上兼容:接口设计中的兼容性策略与工程实践
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践

一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码