1 几个定义
1.1 index
索引(名词)
一个索引类似于传统关系数据库中的一个 数据库 ,是一个存储关系型文档的地方。 索引 (index) 的复数词为 indices 或 indexes 。
索引(动词)
索引一个文档 就是存储一个文档到一个 索引 (名词)中以便它可以被检索和查询到。这非常类似于 SQL 语句中的 INSERT 关键词,除了文档已存在时新文档会替换旧文档情况之外。
1.2 type
分组,由一个或多个json的记录组成。
不同的 Type 应该有相似的结构(schema)。
1.3 document
分组里的每个json。
json里放了具体的信息,如下:
{
"user": "张三",
"title": "工程师",
"desc": "数据库管理"
}
2 操作
2.1 新增索引
新增语句如下
$ curl -XPUT 'localhost:9200/megacorp/employee/1?pretty' -H 'Content-Type: application/json' -d' { "first_name" : "John", "last_name" : "Smith", "age" : 25, "about" : "I love to go rock climbing", "interests": [ "sports", "music" ] }'
解释:
megacorp:index名称
Employee: type名称
{xxxxx}:json串,记录了数据信息
2.2 全部查询
查询index为megacorp,type为employee全部数据,指令如下:
$ curl -XGET 'localhost:9200/megacorp/employee/_search'
控制台打印的信息:
{"took":7,"timed_out":false,"_shards":{"total":5,"successful":5,"skipped":0,"failed":0},"hits":{"total":1,"max_score":1.0,"hits":[{"_index":"megacorp","_type":"employee","_id":"1","_score":1.0,"_source": { "first_name" : "John", "last_name" : "Smith", "age" : 25, "about" : "I love to go rock climbing", "interests": [ "sports", "music" ] }}]}}
2.3 简单查询
查询index为megacorp,type为employee中的first_name为John的数据,指令如下:
$ curl -XGET 'localhost:9200/megacorp/employee/_search?q=first_name:John
控制台打印的信息:
{"took":43,"timed_out":false,"_shards":{"total":5,"successful":5,"skipped":0,"failed":0},"hits":{"total":1,"max_score":0.2876821,"hits":[{"_index":"megacorp","_type":"employee","_id":"1","_score":0.2876821,"_source": { "first_name" : "John", "last_name" : "Smith", "age" : 25, "about" : "I love to go rock climbing", "interests": [ "sports", "music" ] }}]}}
2.4 更新数据
更新数据,即是把数据重新插进去,会自动覆盖之前的数据。
2.5 删除数据
指令如下:
$ curl -XDELETE 'localhost:9200/megacorp/employee/1'\
控制台打印的信息:
{"_index":"megacorp","_type":"employee","_id":"1","_version":2,"result":"deleted","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":1,"_primary_term":1}
删除文档不会立即将文档从磁盘中删除,只是将文档标记为已删除状态。随着你不断的索引更多的数据,Elasticsearch 将会在后台清理标记为已删除的文档。