Elasticsearch学习笔记

ElasticSearch: https://mirrors.huaweicloud.com/elasticsearch/?C=N&O=D
logstash: https://mirrors.huaweicloud.com/logstash/?C=N&O=D
kibana: https://mirrors.huaweicloud.com/kibana/?C=N&O=D

ElasticSearch

下载ElasticSearch,最低支持jdk1.8
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

可视化界面elasticsearch-head

1.https://github.com/mobz/elasticsearch-head下载
2.安装下载依赖
在这里插入图片描述下载完查看
在这里插入图片描述3.启动并访问
在这里插入图片描述
在这里插入图片描述
发现连接不上,跨域问题(跨端口,跨网站等)
4.修改配置,设置跨域
在这里插入图片描述添加

http.cors.enabled: true
http.cors.allow-origin: "*"

重新连接
在这里插入图片描述

kibana

1.下载,要和elastic版本对应
2.解压,解压有点慢
3.启动kibina ,在此之前还得启动elasticsearch
在这里插入图片描述在这里插入图片描述4.访问http://localhost:5601

在这里插入图片描述
5.可以选择汉化
在这里插入图片描述在这里插入图片描述

在这里插入图片描述
保存后,重启kibana
在这里插入图片描述

ES核心概念

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

IK分词器

概念
在这里插入图片描述下载
1.https://github.com/medcl/elasticsearch-analysis-ik
2.解压放到plugins
在这里插入图片描述在这里插入图片描述

3.重启elasticserach
发现闪退。。。。
解决方案:
查看上图中的pom文件,发现对应的elasticsearch版本不对应,我们修改为7.6.1,保存,并通过下面的命令重新下载依赖并打包。

通过命令行进入ik分词pom所在目录下,依次输入

mvn clean
mvn compile
mvn package

最终会出现一个target目录,它里面的release下的zip文件就是我们所需要的啦
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
重新启动elasticsearch
正常启动了。
在这里插入图片描述
4重启kibana,测试
在这里插入图片描述
最细粒度

在这里插入图片描述在这里插入图片描述在这里插入图片描述

5.构建自己的字典
使得狂神说 成为一个词。
5.1新增一个 “cyx.dic”
在这里插入图片描述在这里插入图片描述

5.2 把自己的dic 添加到配置中
在这里插入图片描述在这里插入图片描述
5.3 重启 elasticsearch和kibana
加载了编写的dic
在这里插入图片描述
重新编译,这两个都把狂神说合在一起作为一个词

在这里插入图片描述
ES是针对Result风格的

Result风格

基本概念
在这里插入图片描述
基本测试
创建基本的索引
1打开kibana和9100 (npm run start)
2.kibana 添加
在这里插入图片描述3.EShead查看
在这里插入图片描述在这里插入图片描述4.创建规则
在这里插入图片描述
在这里插入图片描述

文档的操作

基本操作
1.添加数据PUT
在这里插入图片描述2.查询获取数据 GET
GET cyx/user/1
3.更新
3.1直接put修改
3.2 Post //*/_update

POST cyx/user/1/_update
{
  "doc": {
    "name": "王五"
  }
}

3.3简单查询

GET cyx/user/_search?q=name:张三

复杂操作

集成springboot

<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-high-level-client</artifactId>
    <version>7.6.2</version>
</dependency>

用到的依赖主要就是上面的。
从新建空项目开始
1.新建elasticsearch空项目
2.新建模块 es-api ,添加依赖,主要添加这个
在这里插入图片描述

3.设置项目的javac,javascript等
4.修改
项目加载完成后,会发现elastic是6.8版本的
进入
在这里插入图片描述在这里插入图片描述会发现
在这里插入图片描述
所以在pom文件更改版本,这里的elasticsearch版本要和本地的版本一致,
首先修改springboot的版本,先更换为2.2.5

在这里插入图片描述
更新完之后,更改elastic版本
在这里插入图片描述

<elasticsearch.version>7.6.1</elasticsearch.version>

在这里插入图片描述

5…测试
5.1编写config配置类

@Configuration
public class ElasticSearchClientConfig {
    @Bean
    public RestHighLevelClient restHighLevelClient(){
        RestHighLevelClient client = new RestHighLevelClient(
                RestClient.builder(
                        new HttpHost("127.0.0.1", 9200, "http")));
         return client;
    }
}

5.2编写测试类
测试索引API

@SpringBootTest
class EsApiApplicationTests {
	@Autowired
	@Qualifier("restHighLevelClient")
	public RestHighLevelClient client;
	//测试索引的创建
	@Test
	void testCreateIndex() throws IOException {
		//1创建索引请求
		CreateIndexRequest request= new CreateIndexRequest("cyx_index");
		//2客户端执行请求,请求后获得响应
		CreateIndexResponse response = client.indices().create(request, RequestOptions.DEFAULT);
		System.out.println(response);
	}

}

进行测试
同时要开启elastic,elastic-heald,kibana,方便之后的测试进行观察,启动测试之后,发现已经添加了cyx_index的索引
在这里插入图片描述

//测试索引的是否存在
@Test
void testExistIndex() throws IOException {
	GetIndexRequest request= new GetIndexRequest("cyx_index");
	boolean exist = client.indices().exists(request, RequestOptions.DEFAULT);
	System.out.println(exist);
}

在这里插入图片描述
测试一个不存在的
在这里插入图片描述
删除test1
在这里插入图片描述在这里插入图片描述查看确实没有了

//测试删除索引
	@Test
	void testDeleteIndex() throws IOException {
		DeleteIndexRequest request= new DeleteIndexRequest("test1");
		AcknowledgedResponse delete = client.indices().delete(request, RequestOptions.DEFAULT);
		System.out.println(delete.isAcknowledged());
	}

测试文档API
1.添加文档

//测试添加文档
	@Test
	void testAddDocument() throws IOException {
		//1创建对象
		User user=new User("张三",25);
		//2创建请求
		IndexRequest request=new IndexRequest("cyx_index");
		//3规则 put /cyx_index/_doc/1
		request.id("1");
		request.timeout(TimeValue.timeValueSeconds(1));
		request.timeout("1s");
		//4将数据放到json
		request.source(JSON.toJSONString(user), XContentType.JSON);
		//5客户端发送请求,获取响应结果
		IndexResponse response = client.index(request, RequestOptions.DEFAULT);
		System.out.println(response.toString());
		System.out.println(response.status());
	}

返回结果

IndexResponse[index=cyx_index,type=_doc,id=1,version=1,result=created,seqNo=0,primaryTerm=2,shards={"total":2,"successful":1,"failed":0}]
CREATED

在这里插入图片描述
2.测试文档是否存在

//测试文档是否存在
	@Test
	void testExistDocument() throws IOException {
		GetRequest request= new GetRequest("cyx_index","1");
		boolean exist = client.exists(request, RequestOptions.DEFAULT);
		System.out.println(exist);
	}

3.测试获取文档

//测试获取文档
	@Test
	void testGetDocument() throws IOException {
		GetRequest request= new GetRequest("cyx_index","1");
		GetResponse response = client.get(request, RequestOptions.DEFAULT);
		System.out.println(response.getSourceAsString());
		System.out.println(response);
	}
{"age":25,"name":"张三"}
{"_index":"cyx_index","_type":"_doc","_id":"1","_version":1,"_seq_no":0,"_primary_term":2,"found":true,"_source":{"age":25,"name":"张三"}}

4.测试修改文档

//测试修改文档
	@Test
	void testUpdateDocument() throws IOException {
		UpdateRequest request= new UpdateRequest("cyx_index","1");
		request.timeout("1s");
		User user = new User("王五", 55);
		request.doc(JSON.toJSONString(user),XContentType.JSON);

		UpdateResponse response = client.update(request, RequestOptions.DEFAULT);
		System.out.println(response);
		System.out.println(response.status());
	}

5.删除文档信息

//测试删除文档
	@Test
	void testDeleteDocument() throws IOException {
		DeleteRequest request= new DeleteRequest("cyx_index","1");
		request.timeout("1s");
		DeleteResponse response = client.delete(request, RequestOptions.DEFAULT);
		System.out.println(response.status());
	}

6.批量添加文档

//测试添加文档
	@Test
	void testBulkAddDocument() throws IOException {
		BulkRequest request = new BulkRequest();
		request.timeout("1s");

		ArrayList<User> userlist=new ArrayList<User>();
		userlist.add(new User("cyx1",5));
		userlist.add(new User("cyx2",6));
		userlist.add(new User("cyx3",40));
		userlist.add(new User("cyx4",25));
		userlist.add(new User("cyx5",15));
		userlist.add(new User("cyx6",35));
		//批量处理请求
		for (int i = 0; i < userlist.size(); i++) {
			request.add(
					new IndexRequest("cyx_index")
					.id(""+(i+1))
					.source(JSON.toJSONString(userlist.get(i)),XContentType.JSON)
			);
		}
		BulkResponse response = client.bulk(request, RequestOptions.DEFAULT);
		System.out.println(response.hasFailures());
	}

7.搜索查询

//测试查询文档
	@Test
	void testSearchDocument() throws IOException {
		SearchRequest request = new SearchRequest("cyx_index");
		//构建搜索条件
		SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
		sourceBuilder.highlighter();
		TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("name", "cyx1");
		sourceBuilder.query(termQueryBuilder);
		sourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));

		request.source(sourceBuilder);
		SearchResponse response = client.search(request, RequestOptions.DEFAULT);
		System.out.println(JSON.toJSONString(response.getHits()));
		System.out.println("=====================");
		for (SearchHit documentFields : response.getHits().getHits()) {
			System.out.println(documentFields.getSourceAsMap());
		}
	}
{"fragment":true,"hits":[{"fields":{},"fragment":false,"highlightFields":{},"id":"1","matchedQueries":[],"primaryTerm":0,"rawSortValues":[],"score":1.540445,"seqNo":-2,"sortValues":[],"sourceAsMap":{"name":"cyx1","age":5},"sourceAsString":"{\"age\":5,\"name\":\"cyx1\"}","sourceRef":{"fragment":true},"type":"_doc","version":-1}],"maxScore":1.540445,"totalHits":{"relation":"EQUAL_TO","value":1}}
=====================
{name=cyx1, age=5}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值