docker安装elasticsearch:
① docker pull elasticsearch:7.4.2
② docker pull kibana:7.4.2 (可视化界面,要与es版本保持一致)
③ 创建目录:mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data
④写入配置:echo "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml
允许其他任意ip访问
⑤修改文件夹权限(否则启动后由于没有权限进程异常挂掉):
chmod -R 777 /mydata/elasticsearch/
⑥指定配置参数并启动:
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" \
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.4.2
9200是请求es时使用的端口,9300是es集群之间通信使用的端口
docker ps查看运行的es容器id,我的是aabfd653e381
设置每次重启虚拟机es服务也自启动:
docker update aabfd653e381 --restart=always
将aabfd653e381替换成自己的容器id值即可。
⑦运行kibana:
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.1.5:9200 -p 5601:5601 \
-d kibana:7.4.2
在运行kibana过程中,反复出现服务启动后过一会自动挂掉了,
docker logs 容器id ,查看日志也无异常,而且虚拟机贼卡,内存也不足了(不知道是不是这个原因),于是在windows下下载了相同版本的kibana,
下载解压后,
先进入config文件夹打开kibana.yml配置文件,配置上es服务地址:
elasticsearch.hosts: ["http://192.168.1.5:9200"] #该行默认是注释的
保存配置后进入bin目录,双击kibana.bat即可,等待命令行执行完毕提示监听服务地址结束
访问localhost:5601弹出kibana界面,完成 !
下面我们创建springboot项目整合es测试下:
es依赖:
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.4.2</version>
</dependency>
查看依赖中是否存在版本不一致的问题
如果存在应该是框架中原本有的依赖版本影响,
进入依赖后搜索elasticseach
赋值该版本配置到自己的项目中,在自己项目中的pom文件中设置该版本号
<properties>
<elasticsearch.version>7.4.2</elasticsearch.version>
</properties>
刷新依赖保证版本一致。
其他依赖(例如JSON等)在使用编写过程中自行引入,不在此赘述。
创建config.ElasticSearchConfig配置类:
import org.apache.http.HttpHost;
import org.elasticsearch.client.HttpAsyncResponseConsumerFactory;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class ElasticSearchConfig {
public static final RequestOptions COMMON_OPTIONS;
static{
RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder();
// builder.addHeader("Authorization", "Bearer " + TOKEN);
// builder.setHttpAsyncResponseConsumerFactory(
// new HttpAsyncResponseConsumerFactory
// .HeapBufferedResponseConsumerFactory(30 * 1024 * 1024 * 1024)
// );
COMMON_OPTIONS = builder.build();
}
@Bean
public RestHighLevelClient esRestClient(){
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(
new HttpHost("192.168.1.5", 9200, "http"))
);
return client;
}
}
接下来就是编写测试代码了:
@Test
public void indexData() throws IOException {
IndexRequest indexRequest = new IndexRequest("users");
indexRequest.id("1"); //数据的id
// indexRequest.source("userName", "zhangsan", "age", 18, "gender", "男");
User user = new User();
user.setUserName("zhangsan");
user.setAge(18);
user.setGender("男");
String jsonString = JSON.toJSONString(user);
indexRequest.source(jsonString, XContentType.JSON);//要保存的内容
//执行操作
IndexResponse index = client.index(indexRequest, ElasticSearchConfig.COMMON_OPTIONS);
//提取有用的响应数据
System.out.println(index);
}
@Data
class User{
private String userName;
private Integer age;
private String gender;
}
执行测试,成功后,可以通过之前安装的kibana查看: