操作索引
ElasticSearch存储数据的地方,可以理解成关系型数据库中的数据库概念。
- 添加索引
PUT http://ip:端口/索引名称
Kibana操作 --- PUT 索引名称
- 查询索引
GET http://ip:端口/索引名称 # 查询单个索引信息
GET http://ip:端口/索引名称1,索引名称2... # 查询多个索引信息
GET http://ip:端口/_all # 查询所有索引信息
Kibana操作
GET 索引名
GET 索引名1,索引名2
GET _all
- 删除索引
DELETE http://ip:端口/索引名称
Kibana操作 --- DELETE 索引名
- 关闭索引
POST http://ip:端口/索引名称/_close
Kibana操作 --- POST 索引名称/_close
- 打开索引
POST http://ip:端口/索引名称/_open
Kibana操作 --- POST 索引名称/_open
操作映射
数据类型
简单数据类型
- 字符串
- text:会分词,不支持聚合
- keyword:不会分词,将全部内容作为一个词条,支持聚合
- 数值
- 布尔
- boolean
- 二进制
- binary
- 范围类型
- integer_range, float_range, long_range, double_range, date_range
- 日期
- date
复杂数据类型
- 数组:[ ]
- 对象:{ }
操作映射
PUT /索引库名称/_mapping/类型名称
{
"properties": {
"字段名": {
"type": 类型,可以是text、keyword、long、short、date、integer、object等
"index": 是否索引,默认为true
"store": 是否存储,默认为false
"analyzer": 分词器
}
}
}
PUT person
{
"mappings": {
"properties": {
"name":{
"type" : "keyword"
},
"age":{
"type" : "integer"
},
"address":{
"type" : "text",
"analyzer": "ik_max_word"
}
}
}
}
name: 字段【域】
操作文档
增加文档,ID存在,则更新,不存在,则增加
#添加文档,指定ID
PUT person/_doc/1
{
"name":"张三",
"age":20,
"address":"北京市海淀区"
}
#添加文档,不指定ID
POST person/_doc
{
"name":"张三",
"age":20,
"address":"北京市海淀区"
}
ID会自动生成
删除文档
#删除指定ID的文档
DELETE person/_doc/1
查询文档
#查询指定ID的文档
GET person/_doc/1
#查询全部文档
GET person/_search
#完整语法
GET person/_search
{
"query": {
"match_all": {}
}
}
基本查询
词条查询:term
词条查询是Elasticsearch中的一个简单查询。它仅匹配在给定字段中含有该词条的文档,而
且是确切的、未经分析的词条。最简单的词条查询如下所示:
{
"query" : {
"term" : {
"title" : "crime"
}
}
}
上述查询将匹配title字段中含有crime一词的文档。记住,词条查询是未经分析的,因此需要提供跟索引文档中的词条完全匹配的词条。请注意,在输入数据中,title字段含有Crime and
Punishment,但我们使用小写开头的crime来搜索。因为Crime一词在建立索引时已经变成了crime。
match_all 查询
match_all查询是Elasticsearch中最简单的查询之一。它使我们能够匹配索引中的所有文件。
{
"query" : {
"match_all" : {}
}
}
JavaAPI
1、SpringBoot整合ES
2、操作ES的核心客户端
RestHighLevelClient
3、操作索引
核心对象 IndicesClient
- 创建索引,也可以同时指定映射
create(CreateIndexRequest, RequestOptions.DEFAULT)
//指定映射
CreateIndexRequest.mapping(映射规则,数据格式【一般为json】);
- 查询索引
get(GetIndexRequest, RequestOptions.DEFAULT);
- 判断索引是否存在
exists(GetIndexRequest, RequestOptions.DEFAULT);
- 删除索引
get(DeleteIndexRequest, RequestOptions.DEFAULT);
4、操作文档
核心对象 IndexRequest
- 创建文档
以map为数据
new IndexRequest("索引名").id("文档ID").source(数据);
以对象的json为数据
new IndexRequest("索引名").id("文档ID").source(数据,数据格式【json】);
使用RestHighLevelClient的index方法创建
- 查询文档
使用RestHighLevelClient的get方法查询
- 更新文档
增加文档方法,ID相同,即为更新
- 删除文档
使用RestHighLevelClient的delete方法删除