elasticSearch DLS基础语句

elasticSearch DLS基础语句elasticSearc 数据库和 mysql 数据库的差异 mysql elasticSearc 数据库 database 在 es 叫做 索引数据库 index 表 table 在 es 叫做 类型 type 行 row 在 es 叫做

大家好,我是讯享网,很高兴认识大家。

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  

小讯
上一篇 2025-04-07 11:43
下一篇 2025-02-19 14:43

相关推荐

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