其他分享
首页 > 其他分享> > elasticsearch入门

elasticsearch入门

作者:互联网

1.HTTP操作

  1. 幂等性和非幂等性的概念:幂等通俗来说是指不管进行多少次重复操作,都是实现相同的结果。在REST风格的请求中,GET,PUT,DELETE都是幂等性操作,而POST不是。

1.索引操作

  1. 创建索引:创建索引等同于在关系型数据库中的创建数据库。
// 请求方式使用PUT,创建一个名称叫做phone的索引
http://127.0.0.1:9200/phone

{
    "acknowledged": true,  // 响应结果
    "shards_acknowledged": true,// 分片结果
    "index": "phone"  // 索引名称
}
  1. 查看所有索引
// 请求方式使用GET
http://127.0.0.1:9200/_cat/indices?v

// 
health status index    uuid                   pri rep docs.count docs.deleted store.size pri.store.size
yellow open   phone    FmPm9Ca5QpqP4Pl82rFd5g   1   1          0            0       208b           208b
  1. 查看单个索引
// 请求方式使用GET,查看名称为phone的索引
http://127.0.0.1:9200/phone
  1. 删除索引
// 请求方式使用DELETE,删除名称为phone的索引
http://127.0.0.1:9200/phone

2.文档操作

  1. 创建文档:文档等同于关系型数据库中的表数据,添加的数据格式为JSON格式。
// 请求方式使用POST
http://127.0.0.1:9200/phone/_doc
请求体内容为json字符串:
{
 "title":"小米手机",
 "category":"小米",
 "images":"http://www.gulixueyuan.com/xm.jpg",
 "price":3999.00
}

// 创建文档时指明文档唯一性标识,即ID
// 请求方式使用POST或者PUT
http://127.0.0.1:9200/phone/_doc/001
  1. 查看文档:查看文档时需要指明文档的唯一性标识
// 请求方式使用GET
http://127.0.0.1:9200/phone/_doc/001
  1. 修改文档
// 和创建文档一样,请求方式使用POST,请求体发生变化
http://127.0.0.1:9200/phone/_doc/001
  1. 修改字段:修改某一条数据的局部信息
# 修改华为手机的单价为4999
# 发送post方式的请求,请求体内容如下
{ 
 "doc": {
 "price":3000.00
 } 
}


http://127.0.0.1:9200/phone/_update/001
  1. 删除文档
请求方式使用DELETE
http://127.0.0.1:9200/phone/_doc/001
  1. 条件删除文档:根据条件对多条数据进行删除
请求方式使用POST
请求体如下:
{
    "query": {
        "match":{
            "price":4000.00  // price为查询的字段
        }
    }
}

http://127.0.0.1:9200/shopping/_delete_by_query

3.映射操作

索引库等于有了数据库的database,创建索引库中的映射等同于数据库中的表结构。

  1. 创建映射
请求方式使用PUT
请求体如下
{
 "properties": {
    "name":{
    "type": "text",
    "index": true //表示是否索引默认为true。字段会被索引,则可以用来进行搜索
    },
     "sex":{
     "type": "text",
     "index": false
     },
     "age":{
     "type": "long",
     "index": false
     }
 }
}

http://127.0.0.1:9200/student/_mapping
  1. 查看映射
请求方式使用GET
http://127.0.0.1:9200/student/_mapping
  1. 索引映射关联
请求方式使用PUT
请求体如下:
{
 "settings": {},
 "mappings": {
     "properties": {
        "name":{
         "type": "text",
         "index": true
         
        },
        "sex":{
         "type": "text",
         "index": false
        },
        "age":{
         "type": "long",
         "index": false
        }
    }
 }
}

http://127.0.0.1:9200/student1

4.高级查询

  1. 查询所有文档
请求方式使用GET
请求体如下:
{
    "query":{
        "match_all":{
            
        }
    }
}
http://127.0.0.1:9200/student/_search
  1. 匹配查询
请求方式使用GET
请求体如下:
{
    "query":{
        "match": {
            "name":"zhangsan" // 匹配name为zhangsan的
        }
    }
}

http://127.0.0.1:9200/student/_search
  1. 字段匹配查询
请求方式使用GET
请求体如下:
{
    "query": {
        "multi_match": {
            "query": "zhangsan",
            "fields":["name","nickname"]
        }
    }
}
http://127.0.0.1:9200/student/_search
  1. 关键字精确查询:term 查询,精确的关键词匹配查询,不对查询条件进行分词。
请求方式使用GET
请求体如下:
{
    "query": {
        "term": {
            "name":{
                "value":"lisi"  // 查询name为lisi的
            }
        }
    }
}

http://127.0.0.1:9200/student/_search
  1. 多关键字精确查询:terms 查询和 term 查询一样,但它允许你指定多值进行匹配。
请求方式使用GET
请求体如下:
{
    "query": {
        "terms": {
            "name":["zhangsan","lisi"] // name为zhangsan,lisi都查询出来
        }
    }
}

http://127.0.0.1:9200/student/_search
  1. 指定查询字段
请求方式使用GET
请求体如下:
{
    "_source": ["name","nickname"], //只想获取name,nickname两个字段
    "query": {
        "terms": {
        "nickname": ["zhangsan"]
        }
    }

}
http://127.0.0.1:9200/student/_search
  1. 过滤字段
请求方式使用GET
请求体如下:
{
    "_source":{
        //includes指定要显示的字段
        //excludes指定不想要显示的字段
        "includes":["name","nickname"],
        "excludes":["sex","age"] 
    },
    "query": {
        "terms":{
            "nickname":["zhangsan"]
        }
    }
}

http://127.0.0.1:9200/student/_search
  1. 组合查询:bool把各种其它查询通过must(必须)、must_not(必须不)、should(应该)的方式进行组合
请求方式使用GET
请求体如下:
{
    "query": {
        "bool": {
            "must": [
                {
                    "match": {
                        "name":"zhangsan"
                    }
                }
            ],
            "must_not":[
                {
                    "match":{
                        "age":40
                    }
                }
            ],
            "should":[
                {
                    "match":{
                        "sex":"男"
                    }
                }
            ]
        }
    }
}
  1. 范围查询:range 查询找出那些落在指定区间内的数字或者时间

2.JavaAPI相关操作

参考

标签:127.0,http,9200,0.1,phone,elasticsearch,请求,入门
来源: https://www.cnblogs.com/xiaocer/p/16625589.html