本文共 2460 字,大约阅读时间需要 8 分钟。
提取码:jnw3 搜索什么是搜索, 计算机根据用户输入的关键词进行匹配,从已有的数据库中摘录出相关的记录反馈给用户。
常见的全文搜索引擎,像百度、谷歌这样的。但是除此以外,搜索技术在垂直领域也有广泛的使用,比如淘宝、京东搜索商品,万芳、知网搜索期刊,csdn中搜索问题贴。也都是基于海量数据的搜索。
全文搜索引擎目前主流的索引技术就是倒排索引的方式。
传统的保存数据的方式都是:记录→单词 而倒排索引的保存数据的方式是:单词→记录 例如 搜索“红海行动” 但是数据库中保存的数据如图: 那么搜索引擎是如何能将两者匹配上的呢? 基于分词技术构建倒排索引: 首先每个记录保存数据时,都不会直接存入数据库。系统先会对数据进行分词,然后以倒排索引结构保存。如下: 然后等到用户搜索的时候,会把搜索的关键词也进行分词,会把“红海行动”分词分成:红海和行动两个词。 这样的话,先用红海进行匹配,得到id=1和id=2的记录编号,再用行动匹配可以迅速定位id为1,3的记录。 那么全文索引通常,还会根据匹配程度进行打分,显然1号记录能匹配的次数更多。所以显示的时候以评分进行排序的话,1号记录会排到最前面。而2、3号记录也可以匹配到。Elasticsearch官网:
5.6.4版本下载地址: 下载好后放到/opt/目录下在/opt目录下执行rpm -ivh elasticsearch-5.6.4.rpm
cd /etc/init.d
CentOS7.x 可以通过systemctl list-unit-files|grep elasticsearch 启动之前为elasticsearch配置jdk vim /etc/sysconfig/elasticsearch 中修改JAVA_HOME的路径 启动elasticsearch service elasticsearch start 查看进程核心文件
vim /etc/sysconfig/elasticsearch vim /etc/elasticsearch/elasticsearch.yml 数据文件路径 /var/lib/elasticsearch/ 日志文件路径 /var/log/elasticsearch/elasticsearch.log
vim /etc/elasticsearch/elasticsearch.yml
修改yml配置的注意事项:每行必须顶格,不能有空格,“:”后面必须有一个空格集群名称,同一集群名称必须相同
单个节点名称 网络部分 改为当前的ip地址 ,端口号保持默认9200就行 把bootstrap自检程序关掉 bootstrap.system_call_filter: false 自发现配置:新节点向集群报到的主机名,也可以写ip地址为什么要修改linux配置?
默认elasticsearch是单机访问模式,就是只能自己访问自己。但是我们之后一定会设置成允许应用服务器通过网络方式访问。这时,elasticsearch就会因为嫌弃单机版的低端默认配置而报错,甚至无法启动。所以我们在这里就要把服务器的一些限制打开,能支持更多并发。问题1:max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536] elasticsearch
原因:系统允许 Elasticsearch打开的最大文件数需要修改成65536
解决:vi /etc/security/limits.conf
添加内容: * soft nofile 65536 * hard nofile 131072 * soft nproc 2048 * hard nproc 65536注意:“*” 不要省略掉
可以根据自己的需求更改es启动的内存大小。
vim /etc/elasticsearch/jvm.options 调整一下elasticsearch 的配置,将启动的内存调整为自己需要的大小 # reboot如果启动未成功,请去查看相关日志
vim /var/log/elasticsearch/my-es.log 如果出现下面这个错误先检查自己es的配置文件,也有可能是内存不足造成的删除没用的文件。 xxx.tar.gz拷贝kibana-5.6.4-linux-x86_64.tar 到/opt下解压缩进入kibana主目录的config目录下之后
vim kibana.yml 启动 在kibana主目录bin目录下执行 nohup ./kibana & 然后ctrl+c退出 执行ps -ef 如上图,1757号进程就是kibana的进程用浏览器打开
http://192.168.xx.xx:5601/ 点击左边菜单DevTools 在Console中 执行 get _cluster/health 右边的结果中,status为yellow或者green。 表示es启动正常,并且与kibana连接正常。 测试搜索转载地址:http://rpshn.baihongyu.com/