Elasticsearch为我们项目中数量级较大的搜索服务提供了性能和速度上的帮助,Elasticsearch提供了Rest风格的API,即http请求接口,根据请求的不同也是分为PUT,GET,POST,DELETE,在Elasticsearch中很多名词都是与MySQL相对应的,如下:
索引—>数据库
类型—>数据表
文档—>行
字段—>列
1.创建索引(创建数据库)
创建索引的时候需要注意一点,你的索引名命名要规范,这里可以自行百度.
put world
{
"settings":{
"number_of_shards":1, /*分片数量*/
"number_of_replicas":0 /*副本数量*/
}
}
//这个分片和副本,暂时先不管他.
2.删除索引(删除数据库)
delete world
3.创建映射关系(创建字段名和属性等)
#在有索引的基础上才能创建(在有库的基础上创建表和表内的属性)
------写法1正常mapping创建persion映射关系
put world/_mapping/persion----------------------------------
{
"properties": {
"name": {
"type": "text",
"analyzer": "ik_max_word"
},
"sex": {
"type": "text",
"index": true
},
"age": {
"type": "long"
}
}
}
------写法2自定义mapping创建persion映射关系--------------------------------
PUT world
{
"mappings": {
"persion": {
"properties": {
"name": {
"type": "text",
"analyzer": "ik_max_word"
},
"sex": {
"type": "text",
"index": true
},
"age": {
"type": "long"
}
}
}
}
}
数据解析:
PUT /索引库名/_mapping/类型名称
{
"properties": {
"字段名": {
"type": "类型",
"index": true,
"store": true,
"analyzer": "分词器"
}
}
}
类型名称:基本概念中所说的type,类似于数据库中的表
字段名:类似于数据库中的列名。
-----------------------------------------------------------------------------------
type的类型1:
可以是String类型的:text、keyword等
※这里需要注意一下,text和keyword是有区别的
text是支持分词操作的,不可以参与聚合
keyword是不支持分词操作的,数据会作为完整字段进行匹配,可以参与聚合
type的类型2:
可以 是Numerical类型的:long、interger、short、byte、double、float、half_float等
type的类型3:
可以是Date类型:处褚岑为long
------------------------------------------------------------------------------------
index:是否被索引来搜索,默认为true
store:是否对数据进行额外存储,默认为false
analyzer:分词器,这里的`ik_max_word`即使用ik分词器
4.查看映射关系(查看表)
get world/_mapping/persion
5.添加数据(添加数据到表中)
POST world/persion
{
"name" : "jack",
"sex" : "boy",
"age" : 18
}
6.更新数据(更新表中数据)
PUT world/persion/IpheZHEB1uk_PYXuZvA-
{
"name" : "rose",
"sex" : "girl",
"age" : 18
}
7.查询操作
简单查询:
指定id查询
get world/persion/IpheZHEB1uk_PYXuZvA-
指定id查询,检索指定内容
get world/persion/IpheZHEB1uk_PYXuZvA-?_source=name,sex
(高级查询在下一篇文章里)
8.删除操作:
1.根据主键删除:
DELETE world/persion/I5hfZHEB1uk_PYXucfDr(主键)
2.根据匹配条件删除:
_delete_by_query(通过查询的数据进行删除)
POST world/persion/_delete_by_query
{
"query":{
"term":{
"_id":"_Kg6bXEBaJ4easjLYQXw"
}
}
}
3.一次性删除所有数据:
POST world/persion/_delete_by_query?pretty
{
"query" : {
"match_all" : {
}
}
}