es索引库操作(Elasticseach)

目录

索引库属性解释

DSL创建索引库

DSL修改索引库

DSL查看索引库

DSL删除索引库

RestClient初始化

RestClient创建索引库

RestClient删除索引库

RestClient判断索引库是否存在


索引库属性解释

mappings:是对索引库中文档的约束;常见属性如下:

  • type:数据类型

  • index:是否索引

  • analyzer:分词器

  • properties:子字段

type: 字段数据类型,常见的类型有:

  • 字符串:text(可分词的文本)、keyword(精确值,例如:品牌、国家、ip地址)

  • 数值:long、integer、short、byte、double、float

  • 布尔:boolean

  • 日期:date

  • 对象:object

index:是否创建索引,默认为true(需要根据某个字段查询,默认为true;不需要查询当前字段设置为false)

analyzer:使用哪种分词器(只有text值需要分词,其他基本不需要要)

properties:该字段的子字段

DSL创建索引库

ES中通过Restful请求操作索引库、文档。请求内容用DSL语句来表示。

语法

PUT /索引库名称
{
	"mappings": {
		"properties": {
			"字段名1": {
				"type": "text",
				"analyzer": "ik_smart"
			},
			"字段名2": {
				"type": "keyword",
				"index": "false"
			},
			"字段名3": {
				"properties": {
					"子字段": {
						"type": "keyword"
					}
				}
			},
			// ...省略
		}
	}
}

示例

PUT /user
{
	"mappings": {
		"properties":{
			"info": {
				"type": "text",
				"analyzer": "ik_smart"
			},
			"name": {
				"type": "keyword",
			},
			"email": {
				"type": "keyword",
				"index": false
			},
			"address": {
				"type": "object",
				"properties": {
					"province": {
						"type": "keyword"
					},
					"city": {
						"type": "keyword"
					},
					"district": {
						"type": "keyword"
					}
				}
			}
		}
	}
}

DSL修改索引库

修改索引库和mapping一旦创建无法修改,但是可以添加新的字段。

语法

PUT /索引库名/_mapping
{
	"properties": {
		"新字段名": {
			"type": "integer"
		}
	}
}

示例

PUT /user/_mapping
{
	"properties": {
		"age": {
			"type": "integer"
		}
	}
}

DSL查看索引库

语法

GET /索引库名

示例

GET /user

DSL删除索引库

语法

DELETE /索引库名

示例

DELETE /user

RestClient初始化

// 开始
this.client = new RestHightLevelClient(RestClient.builder(HttpHost.create("http://192.168.150.101:9200")));

// 结束
this.client.close();

RestClient创建索引库

语法

void testCreateIndex() throws IOException {
	// 创建Request对象
    CreateIndexRequest request = new CreateIndexRequest('IndexTable');
    // 请求参数,MAPPING_TEMPLATE是静态的常量字符串,内容是创建索引库的DSL语句
    request.source(MAPPING_TEMPLATE, XContentType.JSON);
    // 发起请求
    client.indeices().create(request,RequestOption.DEFAULT);
}

IndexTable:索引库名

MAPPING_TEMPLATE:创建索引库的DSL语句,这里暂时定义成了一个常量,方便阅读

indeices():返回的对象中包含索引库操作的所有方法

示例

void testCreateIndex() throws IOException {
	// 创建Request对象
    CreateIndexRequest request = new CreateIndexRequest('user');
    // 请求参数,MAPPING_TEMPLATE是静态的常量字符串,内容是创建索引库的DSL语句
    request.source(MAPPING_TEMPLATE, XContentType.JSON);
    // 发起请求
    client.indeices().create(request,RequestOption.DEFAULT);
}

RestClient删除索引库

语法

void testDeleteIndex() throws IOException {
	// 创建Request对象
	DeleteIndexRequest request = new DeleteIndexRequest('IndexTable');
    // 发起请求
    client.indices().delete(request, RequestOption.DEFAULT);
}

IndexTable:索引库名称

示例

void testDeleteIndex() throws IOException {
	// 创建Request对象
	DeleteIndexRequest request = new DeleteIndexRequest('user');
    // 发起请求
    client.indices().delete(request, RequestOption.DEFAULT);
}

RestClient判断索引库是否存在

语法

void testExistsIndex() throws IOException {
	// 创建Request对象
	GetIndexRequest request = new GetIndexRequest('indexTable');
	// 发起请求
	boolean exists = client.indices().exists(request, RequestOptions.DEFAULT);
	// 输出
	System.out.println(exists);
}

indexTable:索引库名称

示例

void testExistsIndex() throws IOException {
	// 创建Request对象
	GetIndexRequest request = new GetIndexRequest('user');
	// 发起请求
	boolean exists = client.indices().exists(request, RequestOptions.DEFAULT);
	// 输出
	System.out.println(exists);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值