目录
1 es相关介绍
1 搜索引擎 elasticSearch6(和elasticSearch5的区别在于,root用户权限、一个库能否建立多个表)
2 搜索引擎
文本搜索(以空间换时间算法) 于同类产品相比(solr、hermes),和solr一样都是基于lucene(apache),默认以集群方式工作
搜索引擎(以百度和goole为例)的工作原理是什么? a 爬虫 b 分析 c 查询
3 elasticSearch(搜索引擎)的算法 倒排索引(在内容上建立索引,用内容去匹配索引) Btree(balance tree b-tree) B+tree
|
2 安装和启动
1 安装环境 Centos7 + jdk8 2 配置文件 elasticSearch.yml(集群配置文件)、jvm.Opitons(jvm配置文件) 3 创建目录、上传,解压 Mkdir -p /opt/es 上传 Tar – zxvf elasticsearch-6.3.1.tar.gz
4 配置 Es使用最大线程数、最大内存数、访问的最大文件数 启动脚本
需要改成其他非root用户才能启动
Adduser es
Su es Es使用的jvm的内存大小 访问权限:es无法访问data目录(data是es的软件和日志数据目录)
5 启动 Es的权限问题: 首先用root用户解压 Tar – zxvf elasticsearch-6.3.1.tar.gz 然后用root用户授权 Chmod 777 -R elasticsearch-6.3.1
启动后配置 elasticSearch.yml、jvm.Opitons
jvm.Opitons中配置es能够使用jvm内存大小 elasticSearch.yml中配置es的host地址(配成本机地址,允许访问) 配置完毕启动es(必须切换到非root用户下) 启动后会报错(linux的默认线程数、最大文件数、最大内存数都不够)
6 修改linux的配置(配合es的启动需求) 两处修改 A修改linux的limits配置文件,设置内存线程和文件 B修改linux的sysctl配置文件,配置系统使用内存
整个es的配置有四处文件需要修改
7 启动安装
|
3 es的基本概念
1 通过(9200端口)http协议进行交互 http://192.168.222.20:9200/_cat/indices?v
2 基本概念 Index 库 Type 表 Document 行(一条数据) Field 字段
3 开发工具(kibana) 配置 启动kibana 查看kibana Kill -9 3486 端口号5601 |
报错: No shard available for [get [.kibana][doc][config:6.3.1]: routing [null]] :: {"path":"/.kib ana/doc/config%3A6.3.1","query":{},"statusCode":503,"response":"{\"error\":{\"root_cause\":[{\"typ e\":\"no_shard_available_action_exception\",\"reason\":\"No sha
解决(参考):https://my.oschina.net/u/3314358/blog/2221363
1)删除索引
[root@server ~]# curl -XDELETE http://localhost:9200/.kibana
{"acknowledged":true}
2)在 kibana 界面开启或关闭
3)排查后的状态
[root@server ~]# curl '192.168.100.15:9200/_cat/indices?v'
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
green open system-syslog-2018.09 TR_gdOb8RDSRtHj_g4a4_g 5 1 20 0 240.6kb 120.3kb
green open .kibana GGWwf7gdTwCKMn3BqRaGcQ 1 1 2 0 22kb 11kb
4 es简单办的增删改查
PUT DELETE POST GET
查询带“红”的所有内容
|
5 对于中文的分词
插入数据
PUT /movie_chn/movie/1 { "id":1, "name":"红海行动", "doubanScore":8.5, "actorList":[ {"id":1,"name":"张译"}, {"id":2,"name":"海清"}, {"id":3,"name":"张涵予"} ] } PUT /movie_chn/movie/2 { "id":2, "name":"湄公河行动", "doubanScore":8.0, "actorList":[ {"id":3,"name":"张涵予"} ] }
PUT /movie_chn/movie/3 { "id":3, "name":"红海事件", "doubanScore":5.0, "actorList":[ {"id":4,"name":"张晨"} ] } |
查询测试
GET /movie_chn/movie/_search { "query": { "match": { "name": "红海战役" } } }
GET /movie_chn/movie/_search { "query": { "term": { "actorList.name": "张译" } } } |
GET _analyze { "text": "红海行动" } 加入中文分词器 进入插件目录 在plugins目录下解压一层目录就可以 Ik(中英文分词器)有两个: 1 ik_smart(简易分词) 2 ik_max_word(尽最大可能分词) GET _analyze { "analyzer": "ik_smart", "text": "我是中国人" }
|
相关性算分数: 查询的关键字在进行分词处理后,与es的文档(分词处理并建立了索引)之间的相关度的高低 |