本文分成两部分,一部分介绍在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/man2.当然我们也可以基于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了。
{
"name":"网络2",
"age":34
}
这里的id=1,即指定文档1(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"
}
}
}