本文分成两部分,一部分介绍在elasticsearch中索引的创建,第二部分介绍elasticsearch的基本操作.
(1)首先我们创建一个index:
1.在elasticsearch的webui界面中有一个add index中可以创建索引,填入所以的分片数和备份数即可。
索引创建好了,接下来就是创建类别和文档,如下我创建一个person表,包含name,age,示例如:
{
"man":{
"properties":{
"name":{
"type":"text"
},
"age":{
"type":"Integer"
}
}
}
}
然后可以用“put”预防将上述的json提交至master节点地址:127.0.0.1/person/man
2.当然我们也可以基于put语法直接创建索引类别文档,同样基于“put”的语法,在提交的json中创建索引。
{
"setting":{
"number_of_shards":3,//分片数
"number_of_replicas:":1//备份数
},
"mappings":{
"properties":{
"man":{
"name":{
"type":"text"
},
"age":{
"type":"integer"
}
}
}
}
}
访问master节点地址 :127.0.0.1/person即可。
(2)数据的插入:
(1)基于”post“语法,访问127.0.0.1/person/man,提交一条记录至创建的person表中:
{ "name":"网络", "age":30 }
插入数据后,数据表中会自动生成一个id,如果我们想自己生成id该如何做?那也很方便访问127.0.0.1/person/man/1,以put语法提交json就ok了。这里的id=1,即指定文档1{ "name":"网络2", "age":34 }
(2)数据的删除比较简单,以delete方式访问索引、类别、文档即可(3)查询和更新的查找原理类似,主要在一些语法方面的区别,下面将列一些常见的操作。
group by聚合
{ "aggs": { "group_by_name": { "terms": { "field": "country" } } } }//count 字段为keywords
查询年龄字段为30的数据并以倒序排列
{ "query": { "match": { "age": 30 } }, "sort": [ { "date": { "order": "desc" } } ] }//date不是text 类型
{ "query": { "match": { "name": "网络" } }, "sort": [ { "date": { "order": "desc" } } ] }//模糊匹配
{ "query": { "match_phrase": { "name": "网络" } }, "sort": [ { "date": { "order": "desc" } } ] }//精确匹配
{ "query": { "multi_match": { "query": "5", "fields": [ "name" ] } }, "sort": [ { "date": { "order": "desc" } } ] }//多个条件或查询,查询字段类型为text
{ "query": { "query_string": { "query": "(5 AND he)OR 网络" } ,"fields": [ "name" ] }, "sort": [ { "date": { "order": "desc" } } ] }//语句查询
结构化语句的查询 { "query": { "term": { "age": 30 } }, "sort": [ { "date": { "order": "desc" } } ] } { "query": { "range": { "age": { "gt": "2", "lte": "42" } } }, "sort": [ { "date": { "order": "desc" } } ] }
过滤器 { "query": { "bool": { "filter": { "term": { "name": "5" } } } } }
固定分数查询 { "query": { "match": { "name": "5" } } }