安装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/30 16:08:42 阅读更多 →
YOLOv8在管道泄漏检测中的应用与优化策略

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

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

2026/10/10 15:14:20 阅读更多 →
AI驱动多语言SEO优化:语义地图与本地化实践

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

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

2026/10/13 16:54:20 阅读更多 →

最新新闻

PAT 1046最短距离题的I/O性能陷阱与前缀和优化

PAT 1046最短距离题的I/O性能陷阱与前缀和优化

1. 这道题不是考算法,是考“读题陷阱”的临场反应看到标题里那个醒目的“21行代码AC”,再配上“1046 Shortest Distance (20 分)”这个编号,第一反应往往是:又一道水题?不就是环形数组求两点间最短路径嘛,前…

2026/10/17 0:18:50 阅读更多 →
H3C GB0-670认证考点解析:MSA存储、SAN组网与RAID知识点梳理

H3C GB0-670认证考点解析:MSA存储、SAN组网与RAID知识点梳理

简介:面向H3C认证工程师-MSA存储(GB0-670)考试的题库文档,适合正在备考H3CNE-MSA认证的存储工程师、网络管理员及售后服务人员。文档以问答形式整理了MSA 2042与MSA 2040差异、主机访问协议(iSCSI/SAS/FC/InfiniBand&a…

2026/10/17 0:18:50 阅读更多 →
工业蒸汽量预测:物理引导的时序建模实战

工业蒸汽量预测:物理引导的时序建模实战

1. 项目概述:这不是一场“刷分游戏”,而是一次工业场景下的真实建模实战“工业蒸汽量预测”——光看这六个字,很多人第一反应是“又一个回归赛题”,点开天池学习赛页面,看到特征表里密密麻麻的“入口温度”“炉膛压力”…

2026/10/17 0:18:50 阅读更多 →
5G KPI体系分层架构与指标计算口径:从接入到体验的排查实战

5G KPI体系分层架构与指标计算口径:从接入到体验的排查实战

简介:面向运营商网络优化工程师与无线网规人员,这份演示文稿系统梳理了爱立信5G-KPI体系,用于帮助读者理解5G网络性能评估的量化指标框架。内容涵盖从单站健康检查、簇优化到全网优化的层级划分,并覆盖接入性、保持性、移动性、完…

2026/10/17 0:18:50 阅读更多 →
ChatGPT生成原理六讲:从Token到人话的工程链路

ChatGPT生成原理六讲:从Token到人话的工程链路

简介:本资源是一份面向AI初学者与NLP从业者的ChatGPT原理深度解析文档,聚焦语言模型底层机制与工程实现逻辑,帮助读者突破“黑箱”认知,系统理解对话生成技术的演进路径与关键技术栈。全文约四千字,以清晰的技术脉络展…

2026/10/17 0:18:50 阅读更多 →
HEIF/HEIC深度解析:从Box结构到属性链的完整指南

HEIF/HEIC深度解析:从Box结构到属性链的完整指南

简介:ISO/IEC 23008-12:2017 是国际标准《信息技术 异构环境中的高效编码和媒体交付 第12部分:图像文件格式》的官方 PDF 原文,对应 HEIF/HEIC 格式,面向图像编解码、流媒体传输、跨平台格式兼容等方向的工程师、研究人员及标准合…

2026/10/17 0:17:49 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/16 14:23:36 阅读更多 →