elasticSearch数据库和mysql数据库的差异
mysql ======》 elasticSearch
数据库(database) 在es叫做 (索引数据库) index
表(table) 在es叫做 (类型) type
行(row) 在es叫做 (文档) document
列(column) 在es叫做 (字段)field
表结构 在es叫做 (映射) _mapping
操作之前,要先安装elasticsearch 数据库,再安装kibana,不知道怎么安装? 点我试试
创建数据库
mysql create databse studentinfo
在es操作 PUT /studentinfo
创建表
在studentinfo(数据库)创建表,表的字段:id、name、age、height、remark、isHealth、类型如下
mysql
在es操作
(这里我就不在mysql去创建表了) type:类型,可以是text、long、short、date、integer、object等
index:是否索引,默认为true
store:是否存储,默认为false
analyzer:分词器,这里的ik_max_word即使用ik分词器
查看表字段
mysql desc table
在es操作 GET studentinfo/_mapping/student


新增数据
mysql insert into table value ('','','')
在es操作 # 插入数据(不指定id,这里的id指的是es的_id,唯一)
# 插入数据(不指定id) POST studentinfo/student { "id":"1", "name":"张三", "age":"15", "height":"1.45", "isHealth":true, "remark":"中学生" }
讯享网



批量新增
mysql INSERT INTO testTable (xx,xx) VALUES ('xx','xx'),('xx','xx'),('xx','xx')
在es操作 #批量新增(注意这里格式必须要格式化一下,kibana 快捷键ctrl + i ,不然会报错)
讯享网#批量新增 POST /studentinfo/student/_bulk {"index":{}} {"name":"李四","age":"28","height":"1.65","isHealth":true,"remark":"社会打工人"} {"index":{}} {"name":"王五","age":"37","height":"1.75","isHealth":true,"remark":"管理人员"} {"index":{}} {"name":"赵六","age":"24","height":"1.65","isHealth":true,"remark":"大学毕业时"} {"index":{}} {"name":"田七","age":"24","height":"1.65","isHealth":true,"remark":"良好四民"}

根据id查询
mysql select * from table where id = 1
在es操作 GET studentinfo/student/1

根据id修改 (没有就新增)
mysql update table set xxx where id = 1
在es操作 #修改 (没有即新增)
#修改 (没有即新增) PUT studentinfo/student/1 { "name":"张三指定id修改,这里注意看 _version 乐观锁机制 加1 ", "age":"251", "height":"2.45", "isHealth":false, "remark":"中学生指定id 修改了" }

根据id删除
mysql delete from table where id = 1
在es操作 DELETE /studentinfo/student/1

根据条件查询再删除
mysql delete from table where id in (select id from table where name like '%张%')
在es操作 #根据条件去删除
讯享网#根据条件去删除 POST /studentinfo/_delete_by_query { "query":{ "match": { "name": "张" } } }


#多字段查询
POST /studentinfo/_search { "query": { "multi_match": { "query": "四", "fields": [ "name", "remark" ] } } }
#精确查询(一般用于查询数字,时间)

讯享网#精确查询(一般用于查询数字,时间) POST studentinfo/_search { "query": { "term": { "height": { "value": "1.65" } } } }
#多个值 精确查询(一般用于查询数字,时间)

#多个值 精确查询(一般用于查询数字,时间) POST studentinfo/_search { "query": { "terms": { "height": [ "1.75", "1.65" ] } } }
#查询指定字段
mysql select id,name,height,xxx from table
在es操作 #查询指定字段
讯享网#查询指定字段 POST studentinfo/_search { "_source": ["name","remark","height"], "query": { "terms": { "height": [ "1.75", "1.65" ] } } }

#范围查询
mysql select * from table where age>=25 and age <30
在es操作 #范围查询
#范围查询 POST studentinfo/_search { "query": { "range": { "age": { "gte": 25, "lt": 30 } } } }

#排序 多字段

讯享网#排序 多字段 POST studentinfo/_search { "query": { "match_all": {} }, "sort": [ { "age": { "order": "asc" } }, { "_score": { "order": "asc" } } ] }
#高亮

#高亮 POST studentinfo/_search { "query": { "match": { "name": "四" } }, "highlight": { "pre_tags": "<b color='red'", "post_tags": "<b>", "fields": { "name": {} } } }
#分页 分页公式:int start = {pageNum-1}*size
mysql select * from table limit 2,2
在es操作 #分页 分页公式:int start = {pageNum-1}*size
讯享网#分页 分页公式:int start = {pageNum-1}*size POST studentinfo/_search { "query": { "match_all": {} }, "from": 2, "size": 2 }

#地理查询
mysql select * from xx where a between 10.2 and 30.3
在es操作
公式1: (不常用 根据两个点画出矩形,查询这个矩形内的所有东西) GET /indexName/_search { "query":{ "geo_bounding_box":{ "FIELD":{ "top_left":{ "lat":22.2, "lon":33.3 }, "bottom_right":{ "lat":44.4, "lon":55.5 }, } } } } 公式2: (常用 以自己为中心,画出5km的半径,然后画一个圆 搜索圆里面的内容 ) GET /indexName/_search { "query":{ "geo_distance":{ "FIELD":{ "distance":"5km" "FIELD":"11.1,22.2" } } } }
如果小伙伴们有什么疑问,欢迎下面评论。欢迎指正。如还有什么不懂的加我 :
如果没有及时回复,可以点我先问问AI机器人
https://chatgpt.byabstudio.com/login?code=4

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/42997.html