1、提供快速查询
Lucene 作为底层的,是一个高性能的搜索引擎包,默认情况下会将所有数据全部进行索引。这里的索引是一种数据结构,依据数据建造,会让查询变得非常迅速。
Lucene 是倒排索引,
2、确保结果的相关性
它是根据得分来计算的,算法 TF-IDF;
(1)词频:单词在文档中出现次数越多,得分就越高
(2)你文档词频:如果某个词在所有文档比较少见,那么权重越高,得分就越高。
Elasticsearch 还有一些内置功能,来计算相关性得分,以满足定制需求。比如 特定字段得分,标题比内容更重要。甚至可以通过用户点赞数,新旧帖子等等,来提高得分。
3、超越精确匹配
- 处理错误拼写:模糊查询
- 支持变体
- 使用统计信息
- 给予自动提示
4、安装
4.1 基本配置(单机,集群相同)
(1)下载Elasticsearch ,解压到特定目录
(2)创建用户
useradd -d /home/es -m es
su es
(3)修改配置
/config 下
vim elasticsearch.yml
修改以下配置:
#集群名称,建议修改成自己的,防止误用默认集群
cluster.name: elasticsearch
#配置外网可以访问
network.host: 0.0.0.0
#单节点需要修改配置
cluster.initial_master_nodes: ["node-1"]
追加配置文件:
echo "bootstrap.memory_lock: false" >> /opt/elasticsearch-6.4.0/config/elasticsearch.yml
echo "bootstrap.system_call_filter: false" >> /opt/elasticsearch-6.4.0/config/elasticsearch.yml
echo "* soft nofile 65536" >> /etc/security/limits.conf
echo "* hard nofile 131072" >> /etc/security/limits.conf
echo "* soft nproc 4096" >> /etc/security/limits.conf
echo "* hard nproc 4096" >> /etc/security/limits.conf
echo "vm.max_map_count=655360" >> /etc/sysctl.conf
以上 亦可直接 vi limits.conf ,sysctl.conf直接追加
保存后执行
sysctl -p
(4)访问验证
6 访问验证:
curl http://192.168.0.102/9200
或者浏览器访问
1 、单机安装
bin目录下启动 ./elasticsearch -d 后台启动
2、集群部署
2.1 手动配置启动
2.2 集群配置(修改配置文件方式)
2.2.1 配置修改
cluster.name: my-els # 集群名称 节点要统一
node.name: els-node1 # 节点名称,仅仅是描述名称,用于在日志中区分
discovery.zen.ping.unicast.hosts: ["192.168.60.201", "192.168.60.202","192.168.60.203"]
discovery.zen.minimum_master_nodes: 2 # 为了避免脑裂,集群节点数最少为 半数+1
2.2.2JVM配置
由于Elasticsearch是Java开发的,所以可以通过/etc/elasticsearch/jvm.options
配置文件来设定JVM的相关设定。如果没有特殊需求按默认即可。
不过其中还是有两项最重要的-Xmx1g
与-Xms1g
JVM的最大最小内存。如果太小会导致Elasticsearch刚刚启动就立刻停止。太大会拖慢系统本身。
vim /etc/elasticsearch/jvm.options
-Xms1g # JVM最大、最小使用内存
-Xmx1g