栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

ELasticSearch基本使用

ELasticSearch基本使用

一、 ElasticSearch在window环境下的安装
  1. 访问ElasticSearch的官方地址(https://www.elastic.co/cn/)
  2. 下载ElasticSearch的windows版本安装解压
  3. 解压完成之后,进入bin目录下,启动elasticsearch.bat文件
  4. 启动完成之后,在浏览器输入localhost:9200,出现如下即表示启动成功
二、正排索引和倒排索引

一张表的数据如下

idcontent
1his name is tom
2her name is lisa
  • 正排索引
    查询指定的tom关键字,对整张表中的content中的所有字进行查询,是否与关键字相匹配,如果匹配的上,则查找该对应content的id,使用id进行数据的查询,该方式为正排索引
  • 倒排索引
关键字id
tom1
lisa2
name1,2
is1,2

将content字段中的所有的所有内容进行划分,通过指定的关键字,找到对应的id,再通过id匹配数据,这种方式称为倒排索引

三、ElasticSearch中数据格式

ElasticSearch是面向文档型数据库,一条数据就是一个文档。
将ElasticSearch里存储文档的数据和关系型数据库Mysql存储数据概念进行对比

ElasticSearch中的Index可以看做是一个库,而Types相当于表,documents则相当于表的行,这里面Types的概念已经被弱化了,ElasticSearch6.x中,一个index下面只能包含一个types,但是ElasticSearch7.x中,types的概念已经被移除了

四、ElasticSearch基本操作
  • 创建索引
    发送put请求到localhost:9200上,后面拼接所需要创建的索引的名称。比如发送localhost:9200/shopping的put请求则创建的是名为shopping的索引
  • 查询索引
    发送get请求到localhost:9200上,后面拼接所需要查询的索引的名称。比如发送localhost:9200/shopping的get请求则表示查询名为shopping索引的基本信息。发送localhost:9200/_cat/indices?v表示查询索引的索引信息
  • 删除索引
    发送delete请求到localhost:9200上,后面拼接所需要删除的索引的名称。比如发送localhost:9200/shopping的delete请求则删除的是名为shopping的索引
  • 创建文档
    发送post请求到localhost:9200上,后面拼接所需要创建的文档所在的索引,以及创建文档的表示。比如发送localhost:9200/shooping/_doc的post请求,请求体中再以json格式写入文档信息,则可以创建一个文档
  • 查询文档
    发送get请求到localhost:9200上,后面拼接所需要查询文档所在的索引和id。比如发送localhost:9200/shooping/_doc/1001的get请求,是查询id为1001的文档信息;发送localhost:9200/shopping/_search的get请求,是查询所有的文档信息
  • 全量修改
    发送put请求到localhost:9200上,后面拼接所需要修改文档所在的索引和id。比如发送localhost:9200/shooping/_doc/1001的put请求,并在请求体中传递全部的文档信息,则意味着对文档id为1001的数据进行覆盖
  • 局部修改
    发送post请求到localhost:9200上,后面拼接所需要修改文档所在的索引和id。比如发送localhost:9200/shooping/_update/1001的post请求,并在请求体中传递所需要修改的字段的信息,则意味对文档id为1001的数据进行局部变量的修改
  • 删除文档
    发送delete请求到localhost:9200上,后面拼接所需要修改文档所在的索引和id。比如发送localhost:9200/shooping/_doc/1001的delete请求,则意味对文档id为1001的数据进行删除
五、ElasticSearch查询操作

查询URL统一为localhost:9200/shopping/_doc/_search

  • 条件查询:查询标题中包含魅族的所有文档
{
    "query":{
        "match":{
            "title":"魅族"
        }
    }
}
  • 分页查询:查询第一页,每页含有两条数据
{
    "query":{
        "match_all":{}
    },
    "from":0,
    "size":2
}
  • 结果筛选:只查出所有文档的title字段的信息
{
    "query":{
        "match_all":{}
    },
    "_source":["title"]
}
  • 结果排序:对所有文档的数据按照price的降序进行排序
{
    "query":{
        "match_all":{}
    },
    "sort":{
        "price":{
            "order":"desc"
        }
    }
}
  • 复杂查询:查询出category中包含安卓和苹果的所有数据,并对查询出的数据按照价格大于4999且小于6000进行过滤
{
    "query": {
        "bool": {
            "should": [
                {
                    "match": {
                        "category": "安卓"
                    }
                },
                {
                    "match": {
                        "category": "苹果"
                    }
                }
            ],
            "filter":{
                "range":{
                    "price":{
                        "gt":4999,
                        "lt":6000
                    }
                }
            }
        }
    }
}
  • 高亮查询:对于查询出来的所有category中包含小米的数据中的小米高亮显示
{
    "query": {
        "match": {
            "category": "小米"
        }
    },
    "highlight": {
        "fields": {
            "category": {}
        }
    }
}
  • 聚合查询:对于查询的结果进行一系列聚合操作,包括分组,求平均值等
{
    "aggs":{//聚合操作
        "price_group":{//分组名称(自定义名称)
            "terms":{//分组
                "field":"price"//分组字段
            }
        }
    },
    "size":0
}
六、ElasticSearch映射操作
  1. 创建一个新的索引
    发送get的localhost:9200/user请求,创建一个名为user的新索引
  2. 添加映射关系
    发送put的localhost:9200/user/_mapping请求,请求体如下,创建映射关系
{
    "properties":{
        "name":{
            "type":"text",//支持模糊查询
            "index":true
        },
        "sex":{
            "type":"keyword",//只支持完全匹配查询
            "index":true
        },
        "tel":{
            "type":"keyword",
            "index":false//不支持索引查询
        }
    }
}
  1. 创建文档
    发送localhost:9200/user/_create/1001的put请求,请求体如下,创建一个文档
{
    "name":"张三",
    "sex":"男性",
    "tel":"15155170385"
}
  1. 查询文档
    发送localhost:9200/user/_search的get请求,请求体如下,查询sex为男的文档
{
    "query":{
        "match":{
            "sex":"男"
        }
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/434042.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号