ElasticSearch vs Solr总总结:
1.es基本开箱即用(解压就可以用),
2.Solr利用zookeeper进行分布式管理,而ElasticSearch自身带有分布式协调功能。
3.Solr支持更多格式的数据,比如SON,XML,CSV,而ElasticSearch仅支持json文件格式。
4.Solr官方的功能更多,而ElasticSearch本身更注重于核心功能,高级功能有第三方插件提供,例如图形化界面需要Kibana友好支撑。
ElasticSearch安装:
声明:jdk1.8,最低要求!ElasticSearch客户端,界面工具。
java开发,ElasticSearch的版本和我们之后对应的java的核心jar包,版本对应!
windows下安装:
熟悉目录:
bin:启动文件;
config:配置文件;
log4j2 日志文件
jvm.options java虚拟机相关配置
ElasticSearch。.yml:ElasticSearchd 的配置文件
lib:相关的jar包
logs 日志
moduels:功能模块
plugins 插件
双击打开:
端口:9200
安装可视化界面:
D:\Program Files\elasticsearch-head-master>cnpm install
运行:
D:\Program Files\elasticsearch-head-master>npm run start
解决跨域:
修改配置文件:
http.cors.enabled: true
http.cors.allow-origin: "*"
重启:
新建索引:
把索引当作数据库
安装kibana
解压双击打开:
端口:
访问测试:
http://localhost:5601
修改kibana配置config
核心概念:
物理设计’:
elasticsearch在后台把每个索引划分成多个分片,每分分片在集群中的不同服务器迁移,一个人就是一个集群,默认的集群名称就是elasticsearch
设计逻辑:
一个索引类型中,包含多个文档,比如说文档1,文档2,当我们索引一篇文档时,可以通过这样的一个顺序找到他:索引》l类型。文档ID,通过这个组合我们就能索引到某个具体的文档,注意:ID不鄙视整数,实际上它是个字符串。
之前说elasticsearch是面向文档的,那么意味着索引和搜索数据的最小单位是文档,elasticsearch中,文档有几个重要属性:
自我包含,一篇文档同时包含字段和对应的值,也就是同时包含key:value
可以是层次型的,一个文档中包含子文档,复杂的逻辑实体就是这么来的,{就是一个json对象,fastjsin进行自动转换}
灵活的结构,文档不依赖预先定义的模式,我们知道关系型数据库中,要提前定义字段才能使用,在elastitseaxh中,对于字段是非常灵活的,有时候,我们可以忽略该字段,
ik分词器;
分词:即把一段中文或者别的划分成一个个发关键字,我们在搜索时候会把自己的信息进行分词,会把数据库中或者所索引库中的数据进行的分词,然后进行一个匹配操作,默认的中外文分词是将每个字看成一个词,比如“我爱学习”会被分成“我”,“爱”,“学”,“习”,这显然是不符合要求的,所以我们需要安装中文分词器ik解决中国问题。
安装,:
解压到–》
重启ElasticSearch
查看不同的分词效果
发现问题:有的词被拆开了
这种自己想要的词,需要自己加到我们的分词器的字典中
ik分词器增加自己的配置。
以后的话,我们需要自己配置分词就在自己定义的dic文件中进行配置。
基础测试:
1.创建一个索引
PUT /索引名/·类型名/文档id
{
请求体
}