Elasticsearch


Elasticsearch学习笔记

Elasticsearch是面向文档型数据库,一条数据就是一个文档。ES的index可以看做一个库,而types相当于表,documents相当于表的行

索引操作

比对关系型数据库,创建所以就等同于创建数据库

  • PUT请求

http://127.0.0.1:9200/shopping创建了一个shopping的索引文件

  • GET请求

http://127.0.0.1:9200/shopping获取shopping的索引信息

http://127.0.0.1:9200/_cat/indices?v展示所有的索引信息

  • DELETE

http://127.0.0.1:9200/shopping删除shopping的索引信息

  • HEAD

创建文档

索引创建好之后,创建文档,并添加数据。这里可以类比为关系型数据库中的表数据,添加的数据格式为json,创建方式为post

请求地址为http://127.0.0.1:9200/shopping/_doc

请求体

{
    "title":"小米手机",
    "category":"小米",
    "images":"http://www.gulixueyuan.com/xm.jpg",
    "price":"3999.00"
}

请求地址为http://127.0.0.1:9200/shopping/_doc/10001可以自定义id为10001

获取文档信息,请求方式为get,请求地址为http://127.0.0.1:9200/shopping/_doc/10001

查询所有http://127.0.0.1:9200/shopping/_search

全局修改

请求方式为PUT,请求地址为http://127.0.0.1:9200/shopping/_doc/10001

请求体不能为空

{
    "title":"小米手机",
    "category":"小米",
    "images":"http://www.gulixueyuan.com/xm.jpg",
    "price":"4999.00"
}

局部修改

请求方式为post,请求地址为http://127.0.0.1:9200/shopping/_update/10001

请求体不能为空

{
    "doc":{
        "title":"华为"
    }
}

查询操作

条件查询

1、地址查询

http://127.0.0.1:9200/shopping/_search?q=category:小米

category是属性名,小米是属性值

2、请求体查询

请求地址是http://127.0.0.1:9200/shopping/_search

请求体

{
    "query":{
        "match":{
            "category":"小米"
        }
    }
}

全查询

请求地址是http://127.0.0.1:9200/shopping/_search

请求体

{
    "query":{
        "match_all":{
           
        }
    }
}

分页查询

请求地址是http://127.0.0.1:9200/shopping/_search

请求体

{
    "query":{
        "match_all":{
           
        }
    },
    "from":0,//起始位置
    "size":2,//大小
    "_source":["title"],//对想要的数据进行指定查询
    "sort":{
        "price":{
            "order":"desc"//对price进行降序排序
        }
    }
}

多条件查询

请求地址是http://127.0.0.1:9200/shopping/_search

请求体

{
    "query":{
        "bool":{
           "must":[//多条件,类似于and,or的话用should
               {
                   "match":{
                       "category":"小米"
                   }
               },
               {
                   "match":{
                       "price":"1999.00"
                   }
               },
           ]
        }
    }
}

范围查询

请求地址是http://127.0.0.1:9200/shopping/_search

请求体

{
    "query":{
        "bool":{
            "filter":{
                "price":{
                    "gt":5000//大于5000
                }
            }
        }
    }
}

模糊查询

请求地址是http://127.0.0.1:9200/shopping/_search

请求体

{
    "query":{
        "match":{
            "category": "小华"//会将关键值拆成'小'和'华'去匹配
        }
    }
}
// 要是做完全匹配将'match'换成'match_phrase'

高亮查询

请求地址是http://127.0.0.1:9200/shopping/_search

请求体

{
    "query":{
        "match_phrase":{
            "category": "小米"
        }
    },
    "hightlight":{
        "fields":{
            "category": {}
        }
    }
}

聚合查询

请求地址是http://127.0.0.1:9200/shopping/_search

请求体

{
    "aggs":{
        "price_group":{//名称,如何求平均值换成price_avg
            "terms":{//分组
                "field": "price"//分组字段
            }
        }
    }"size":0
}

Author: baiwenhui
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint policy. If reproduced, please indicate source baiwenhui !
  TOC