【ELK】(二)-Elasticsearch关键概念理解与ES命令练习

一  Elasticsearch与MySQL对应关系表

MySQLElasticsearch
DatabaseIndex
TableType
RowDocument
ColumnField
SchemaMapping
IndexEverthing is indexed
SQLQuery DSL
SELECT * FROM table ...GET http://...
UPDATE table SET ...PUT http://...

参考优秀文档

  1. MySQL 中的数据库(DataBase),等价于 ES 中的索引(Index)。

  2. MySQL 中一个数据库下面有 N 张表(Table),等价于1个索引 Index 下面有 N 多类型(Type)。

  3. MySQL 中一个数据库表(Table)下的数据由多行(Row)多列(column,属性)组成,等价于1个 Type 由多个文档(Document)和多 Field 组成。

  4. MySQL 中定义表结构、设定字段类型等价于 ES 中的 Mapping。举例说明,在一个关系型数据库里面,Schema 定义了表、每个表的字段,还有表和字段之间的关系。与之对应的,在 ES 中,Mapping 定义索引下的 Type 的字段处理规则,即索引如何建立、索引类型、是否保存原始索引 JSON 文档、是否压缩原始 JSON 文档、是否需要分词处理、如何进行分词处理等。

  5. MySQL 中的增 insert、删 delete、改 update、查 search 操作等价于 ES 中的增 PUT/POST、删 Delete、改 _update、查 GET。其中的修改指定条件的更新 update 等价于 ES 中的 update_by_query,指定条件的删除等价于 ES 中的 delete_by_query。

  6. MySQL 中的 group by、avg、sum 等函数类似于 ES 中的 Aggregations 的部分特性。

  7. MySQL 中的去重 distinct 类似 ES 中的 cardinality 操作。

  8. MySQL 中的数据迁移等价于 ES 中的 reindex 操作。

二 ES命令练习

  2.1 创建/查看索引库

ES的索引库是一个逻辑概念,类似MySQL中的Database

##创建索引

curl -XPUT 'http://192.168.10.101:9200/es_test'
##格式:put http://服务器ip:9200/索引库名称       #注意不能使用post

##查看索引 

curl -XGET 'http://192.168.10.101:9200/_cat/indices?v&pretty'

  2.2 创建/查看映射

类似MySQL中:create table es values(id int,name varchar(30),age int),创建一张表并创建相应属性和字段类型

##创建映射:post http://服务器ip:9200/索引库名称/类型名称/_mapping

post  http://服务器ip:9200/es_wcc/doc/_mapping   #在es_test索引库下的doc类型下创建映射
curl -H "Content-Type: application/json"   -XPOST 'http://192.168.10.101:9200/es_test/doc/_mapping?include_type_name=true' -d '{"properties":{"name":{"type":"text"},"description":{"type":"text"},"studymodel":{"type":"keyword"}}}'

##查看映射

curl -H "Content-Type: application/json" -XGET 'http://192.168.10.101:9200/es_test/_mapping'

实例1:在“”在线json“”中压缩 

{
    "properties": {
           "name": {
              "type": "text"
           },
           "description": {
              "type": "text"
           },
           "studymodel": {
              "type": "keyword"
           }
        }
}

  2.3 文档操作 #

   2.31 添加文档:类似MySQL中insert into table_name values (value1, value2, value3);
put 或Post http://服务器ip:9200/es_test/doc/id值     #如果不指定id值ES会自动生成id,id值可以随便设置,如果id值重复了,就是修改之前的数据,不是创建 ******

 ##添加文档 :添加一个内容为实例2且id=1的文档

curl -H "Content-Type: application/json"   -XPOST 'http://192.168.10.101:9200/es_test/doc/1' -d '{"name":"Bootstrap开发框架","description":"Bootstrap是由Twitter推出的一个前台页面开发框架,在行业 之中使用较为广泛。此开发框架包含了大量的CSS、JS程序代码,可以帮助开发者(尤其是不擅长页面开发的程序人员)轻松的实现一个不受浏览器限制的精美界面效果。","studymodel":"201001"}'

实例2

{
  "name":"Bootstrap开发框架",
  "description":"Bootstrap是由Twitter推出的一个前台页面开发框架,在行业之中使用较为广泛。此开发框架包含了大量的CSS、JS程序代码,可以帮助开发者(尤其是不擅长页面开发的程序人员)轻松的实现一个不受浏览器限制的精美界面效果。",
  "studymodel":"201001"
}
   2.32 根据id查询数据 

##搜索文档:类似Mysql中的select * from table where id=1;

查询语句: get  http://101.132.167.242:9200/es_test/doc/1
curl -H "Content-Type: application/json" -XGET 'http://192.168.10.101:9200/es_test/doc/1'
    2.33 查询一个TYPE中所有数据

##查询所有记录:类似Mysql中的select * from table;查询一个TYPE中所有ROW

即在同一个TYPE下加/_search ,注意:使用postman查询会报400错误,只能使用GET

curl -H "Content-Type: application/json" -XGET 'http://192.168.10.101:9200/es_test/doc/_search'
   2.34 条件查询 

这里_search?q=属性:值 类似MySQL中 where 属性=值优秀文档

##查询名称中包括bootstrap关键字的记录:GET必须大写,否则报405,报错原因

curl -XGET  http://192.168.10.101:9200/es_test/doc/_search?q=name:bootstrap

##查询学习模式为201001的记录

curl -XGET  http://192.168.10.101:9200/es_test/doc/_search?q=studymodel:201001

   2.4 DSL搜索

DSL(Domain Specific Language)是ES提出的基于json的搜索方式,在搜索时传入特定的json格式的数据来完成不同的搜索需求。
DSL比URI搜索方式功能强大,在项目中建议使用DSL方式来完成搜索

参考优秀文档

   2.41 分页查询:传入from和size参数

插入多条数据验证即可,from从0开始,size类似Mysql中limit

   2.42 精确查询:Term Query为精确查询,在搜索时会整体匹配关键字,不再将关键字分词。

  2.5 更新文档

类似MySQL中的 UPDATE table_name SET column1 = value1 WHERE condition;

   2.51 完全替换

可以添加新的属性,属性类型系统会自动设置,通过查询映射可看出默认类型

   2.52 部分修改

  2.6 删除文档

   2.61 根据id删除:id可类比为MySQL中的表名:DROP TABLE table_name;
   2.62 搜索匹配删除,将搜索出来的记录删除:类似MySQL:ALTER TABLE your_table
DROP COLUMN your_column;

三 使用IK分词器

---未完

  • 8
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值