Elasticsearch docker安装
默认本机以安装docker服务,首先先启动docker服务
//启动docker服务
systemctl start docker
//查看docker已经启动的镜像
docker ps
//查看docker的下载镜像
docker images
//拉取Elasticsearch镜像
docker pull elasticsearch:6.5.4
//创建一个容器
docker create --name elasticsearch --net host -e "discovery.type=single-node" -e "network.host=10.212.130.5" elasticsearch:6.5.4
//启动一个容器
docker start elasticsearch
//查看启动日志
docker logs -f elasticsearch
Elasticsearch自身没有提供较好的界面管理工具,现在推荐Elasticsearch-head,安装过程如下
//拉取镜像
docker pull mobz/elasticsearch-head:5
//创建容器
docker create --name elasticsearch-head --port 9100:9100 elasticsearch-head:5
//启动插件
docker start elasticsearch-head
第二种方式安装elasticsearch的chrome插件,下载地址如下
https://github.com/TravisTX/elasticsearch-head-chrome ##下载插件
相关RestClient工具github下载地址:
https://github.com/jarrodek/ChromeRestClient
ElasticSearch安装使用中文分词器
IK分词器下载地址:https://github.com/medcl/elasticsearch-analysis-ik
下载zip包之后
#安装方法:将下载到的elasticsearch-analysis-ik-6.5.4.zip解压到/elasticsearch/plugins/ik
目录下即可。
#如果使用docker运行
docker cp /tmp/elasticsearch-analysis-ik-6.5.4.zip
elasticsearch:/usr/share/elasticsearch/plugins/
#进入容器
docker exec -it elasticsearch /bin/bash
mkdir /usr/share/elasticsearch/plugins/ik
cd /usr/share/elasticsearch/plugins/ik
unzip elasticsearch-analysis-ik-6.5.4.zip
#重启容器即可
docker restart elasticsearch
测试中文分词器
POST http://172.16.55.185:9200/_analyze
{
"analyzer": "ik_max_word",
"text": "我是中国人"
}
全文搜素的几个概念
倒排索引
其是指将所有文档中的记录进行分词,将分词结果进行编号,然后遍历文档,并记录存在该单词的记录索引;形成倒排列表,倒排列表中往往还包含其他信息,如词频:某个词在该文档中出现的次数;单词在文档中出现的位置等,由此形成倒排索引。
全文搜素的俩个重要的方面是:
相关性:它是评价查询与结果的相关程度
分析:它是将文本块转换成有区别,规范化的一个token的过程
CentOS使用docker创建集群启动报错
[2019-08-19T08:11:12,879][INFO ][o.e.b.BootstrapChecks ] [node01] bound or publishing to a non-loopback address, enforcing bootstrap checks
ERROR: [1] bootstrap checks failed
[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
对应的解决方案如下:
编辑 /etc/sysctl.conf,追加以下内容:
vm.max_map_count=655360
保存后,执行:
sysctl -p
ES的数据路由规则
shard = hash(routing) % number_of_primary_shards
#routing 默认的是doc id,也可以自定义
#number_of_primary_shards 节点的个数
#shard: 这个routing字符串通过哈希函数生成一个数字,然后除以主切片的数量得到一个余数(remainder),余
数的范围永远是0到number_of_primary_shards - 1,这个数字就是特定文档所在的分片。
RestClient-结合java测试
package com.bdcloud.es.rest;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.http.HttpHost;
import org.apache.http.util.EntityUtils;
import org.elasticsearch.client.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
/***
* 测试RestClien
*/
public class TestRest {
private static final ObjectMapper obMappper = new ObjectMapper();
private RestClient restClient;
@Before
public void init(){
//构造RestClient
RestClientBuilder restClientBuilder = RestClient.builder(
new HttpHost("10.212.130.5",9200,"http"),
new HttpHost("10.212.130.5",9201,"http"),
new HttpHost("10.212.130.5",9202,"http")
);
//设置处理失败处理
restClientBuilder.setFailureListener(new RestClient.FailureListener(){
@Override
public void onFailure(Node node) {
System.out.println("出错了->"+node);
}
});
//
this.restClient = restClientBuilder.build();
}
/***
* 查询集群状态信息
*/
@Test
public void searchClusterStatus() throws IOException {
Request request = new Request("GET","/_cluster/state"