1. 概述
之前聊了一下 Elasticsearch 的安装,今天我们来说说 Elasticsearch 的基本使用。
2. Elasticsearch索引的使用
索引(index)相当于是mysql中的表。
2.1 创建索引
1)Head插件方式
选择 索引 页签,点击【新建索引】按钮,输入索引名称、分片数、副本数,点击【OK】
之所以集群健康值呈现黄色,是因为目前是用单服务器跑的Elasticsearch,而副本是要存储在不同的服务器上的,之后会聊一下 Elasticsearch 集群的搭建。
2)RESTFUL接口方式
PUT http://192.168.1.11:9200/index_user
参数:
{ "settings":{ "index":{ "number_of_shards":5, // 分片数 "number_of_replicas":0 // 副本数 } } }
2.2 查看集群健康状况
RESTFUL接口方式
GET http://192.168.1.11:9200/_cluster/health
响应:
{ "cluster_name": "zhuifengren-es", "status": "yellow", "timed_out": false, "number_of_nodes": 1, "number_of_data_nodes": 1, "active_primary_shards": 6, "active_shards": 6, "relocating_shards": 0, "initializing_shards": 0, "unassigned_shards": 5, "delayed_unassigned_shards": 0, "number_of_pending_tasks": 0, "number_of_in_flight_fetch": 0, "task_max_waiting_in_queue_millis": 0, "active_shards_percent_as_number": 54.54545454545454 }
2.3 删除索引
1)Head插件方式
在 概览 页签,找到需要删除的索引,选择 动作 —> 删除...
2)RESTFUL接口方式
DELETE http://192.168.1.11:9200/index_user
2.4 查看集群整体信息
RESTFUL接口方式
GET http://192.168.1.11:9200/_cat/indices?v
响应:
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size green open .geoip_databases pE4IpIAeSA2AiJzdDdviYA 1 0 42 64 65.1mb 65.1mb green open index_user 2z4cELBeQeijTagp86ShbQ 5 0 0 0 1kb 1kb
3. Elasticsearch映射的使用
映射(mapping)相当于是mysql中的表结构定义。
3.1 Elasticsearch中的主要数据类型
文本类型:text,keyword
整型:long,integer,short,byte
浮点型:double,float
布尔型:boolean
日期型:date
对象型:object
3.2 创建索引并创建映射
RESTFUL接口方式
PUT http://192.168.1.11:9200/index_user
参数:
{ "settings":{ "index":{ "number_of_shards":5, "number_of_replicas":0 } }, "mappings" : { "properties":{ "name":{ "type":"text", // 数据类型 "index":true // 是否索引 }, "loginName":{ "type":"keyword", "index":false }, "age":{ "type":"integer", "index":false } } } }
3.3 在已有的索引上维护mapping
RESTFUL接口方式
POST http://192.168.1.11:9200/index_user/_mapping
参数:
{ "properties":{ "nickname":{ "type":"keyword", "index":false } } }
注意:mapping中的属性,只能添加,不能修改。如果属性设置需要变更,需要删除索引重建。
3.4 查看索引的分词效果
RESTFUL接口方式
GET http://192.168.1.11:9200/index_user/_analyze
参数:
{ "field": "name", "text": "lisa brown" }
4. Elasticsearch文档的使用
文档(document)相当于是mysql中的数据行。
4.1 新增文档
RESTFUL接口方式
POST http://192.168.1.11:9200/index_user/_doc/1
注:url中最后的1是文档在Elasticsearch中的ID,与业务ID无关,如果不写,则会自动生成一个随机字符串作为文档的ID
参数:
{ "name":"zhang san", "loginName":"zs", "age":30 }
如果没有手动创建 映射(mapping),则新增文档后,Elasticsearch会根据文档的字段类型自动创建 映射(mapping)。
4.2 删除文档
RESTFUL接口方式
DELETE http://192.168.1.11:9200/index_user/_doc/1
4.3 修改文档
RESTFUL接口方式
1)只修改部分字段
POST http://192.168.1.11:9200/index_user/_doc/1/_update
参数:
{ "doc":{ "name":"zhangsan2", "age":33 } }
2)全部替换
PUT http://192.168.1.11:9200/index_user/_doc/1
参数:
{ "name":"zhangsan", "loginName":"zs", "age":31 }
4.4 查询文档
RESTFUL接口方式
1)依据文档ID查询
GET http://192.168.1.11:9200/index_user/_doc/1
响应数据:
{ "_index": "index_user", "_type": "_doc", "_id": "1", "_version": 5, "_seq_no": 7, "_primary_term": 1, "found": true, "_source": { "name": "zhangsan", "loginName": "zs", "age": 31 } }
2)查询所有
GET http://192.168.1.11:9200/index_user/_doc/_search
响应数据:
{ "took": 2, "timed_out": false, "_shards": { "total": 5, "successful": 5, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 2, "relation": "eq" }, "max_score": 1.0, "hits": [ { "_index": "index_user", "_type": "_doc", "_id": "_TVW-XsBNDgg-BBCeUvY", "_score": 1.0, "_source": { "name": "lisi", "loginName": "ls", "age": 31 } }, { "_index": "index_user", "_type": "_doc", "_id": "1", "_score": 1.0, "_source": { "name": "zhangsan", "loginName": "zs", "age": 31 } } ] } }
3)查询时自定义结果集
GET http://192.168.1.11:9200/index_user/_doc/1?_source=name,age
GET http://192.168.1.11:9200/index_user/_doc/_search?_source=name,age
5. 综述
今天简单聊了一下 Elasticsearch 的基本使用,希望能对大家的工作有所帮助。
欢迎大家帮忙点赞、评论、加关注 :)
关注追风人聊Java,每天更新Java干货。