赞
踩
MySQL | Elasticsearch |
Database | Index |
Table | Type |
Row | Document |
Column | Field |
Schema | Mapping |
Index | Everthing is indexed |
SQL | Query DSL |
SELECT * FROM table ... | GET http://... |
UPDATE table SET ... | PUT http://... |
参考优秀文档
MySQL 中的数据库(DataBase),等价于 ES 中的索引(Index)。
MySQL 中一个数据库下面有 N 张表(Table),等价于1个索引 Index 下面有 N 多类型(Type)。
MySQL 中一个数据库表(Table)下的数据由多行(Row)多列(column,属性)组成,等价于1个 Type 由多个文档(Document)和多 Field 组成。
MySQL 中定义表结构、设定字段类型等价于 ES 中的 Mapping。举例说明,在一个关系型数据库里面,Schema 定义了表、每个表的字段,还有表和字段之间的关系。与之对应的,在 ES 中,Mapping 定义索引下的 Type 的字段处理规则,即索引如何建立、索引类型、是否保存原始索引 JSON 文档、是否压缩原始 JSON 文档、是否需要分词处理、如何进行分词处理等。
MySQL 中的增 insert、删 delete、改 update、查 search 操作等价于 ES 中的增 PUT/POST、删 Delete、改 _update、查 GET。其中的修改指定条件的更新 update 等价于 ES 中的 update_by_query,指定条件的删除等价于 ES 中的 delete_by_query。
MySQL 中的 group by、avg、sum 等函数类似于 ES 中的 Aggregations 的部分特性。
MySQL 中的去重 distinct 类似 ES 中的 cardinality 操作。
MySQL 中的数据迁移等价于 ES 中的 reindex 操作。
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'
类似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"
- }
- }
- }
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"
- }
##搜索文档:类似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'
##查询所有记录:类似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'
这里_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
DSL(Domain Specific Language)是ES提出的基于json的搜索方式,在搜索时传入特定的json格式的数据来完成不同的搜索需求。
DSL比URI搜索方式功能强大,在项目中建议使用DSL方式来完成搜索
参考优秀文档
插入多条数据验证即可,from从0开始,size类似Mysql中limit
类似MySQL中的 UPDATE table_name SET column1 = value1 WHERE condition;
可以添加新的属性,属性类型系统会自动设置,通过查询映射可看出默认类型
---未完
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。