en~Elastic Search拿去吧

本文详细介绍了Elasticsearch的下载安装、文档使用、高可用集群部署及进阶知识,包括索引创建、文档操作、Java API、集群健康检查及分片原理等内容,适合初学者和进阶者学习。
摘要由CSDN通过智能技术生成

1、 Elastic Search介绍

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、 Elastic Search下载安装

(1)windows
官网地址:

https://www.elastic.co/cn/

官方文档

https://www.elastic.co/guide/index.html
在这里插入图片描述

下载完压缩包,直接解压,启动bin下的elasticsearch.bat
在这里插入图片描述

(2)LINUX安装
(i)将压缩包放到对应目录下
在这里插入图片描述

(ii)解压压缩包,重命名
在这里插入图片描述

(iv)因为安全问题,不能用root运行程序,则我们需要创建一个新用户es7,然后将文件夹创建用户转为es7

useradd es7
passwd es7

chown -R es7:es7 /opt/es7.8.0

(v)修改es的配置文件/config/elasticsearch.yml

cluster.name: elasticsearch  【自定义,但子结点要与该名一致】
node.name: node-1001         【自定义结点名称】
network.host: 0.0.0.0        【指定ip】
http.port: 9200              【设置端口】
cluster.initial_master_nodes: ["node-1"]  【指定主结点】

(vi)修改环境的/etc/security/limits.conf

# 在文件末尾中增加下面内容
# 每个进程可以打开的文件数的限制
es7 soft n ofile 65536
es7 hard nofile 65536

(vii)修改/etc/security/limits.d/20-nproc.conf

# 在文件末尾中增加下面内容
# 每个进程可以打开的文件数的限制
es soft nofile 65536
es hard nofile 65536


# 操作系统级别对每个用户创建的进程数的限制
* hard nproc 4096
# 注:* 带表Linux所有用户名称

(viii)修改/etc/sysctl.conf

# 在文件中增加下面内容
# 一个进程可以拥有的VMA(虚拟内存区域)的数量,默认值为65536
vm.max_map_count=655360

(XI)刷新

sysctl -p

(X)启动es

进入bin目录
#启动
./elasticsearch
#后台启动
./elasticsearch -d

测试是否成功启动:
用浏览器请求以下url,显示如下代表启动成功!

http://localhost:9200/

在这里插入图片描述

ES的各url用处
(1)创建索引【put请求 注意:索引名要小写 eg:shopping】

http://127.0.0.1:9200/shopping

在这里插入图片描述在这里插入图片描述在这里插入图片描述

注意:同一个索引只能发一次索引请求,发多次会报以下错误
在这里插入图片描述

(2)查看所有索引【get请求】

http://127.0.0.1:9200/_cat/indices?v

在这里插入图片描述

(3)查看单个索引【get请求】

http://127.0.0.1:9200/shopping

在这里插入图片描述

(4)删除索引【delete请求】

http://127.0.0.1:9200/jackstyle
在这里插入图片描述

3、 Elastic Search文档使用

(1)文档创建【post请求 /shopping/_doc/1002: /索引名/文档名/自定义id(响应值:_id)】【注意:id可以不需要并且文档名称也可以自定义:eg:/shopping/_create

http://127.0.0.1:9200/shopping/_doc/1002

加入内容

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

在这里插入图片描述在这里插入图片描述在这里插入图片描述

(2)查询文档某个数据【get请求 注意:无论之前创建时用的文档类型是什么查询时url都是_doc】

http://127.0.0.1:9200/shopping/_doc/1001

在这里插入图片描述

(3)查询文档所有数据【get请求】

http://127.0.0.1:9200/shopping/_search

在这里插入图片描述

(4)修改文档数据【put请求】

http://127.0.0.1:9200/shopping/_doc/1002

在这里插入图片描述

(5)指定对象修改文档数据【post请求】

http://127.0.0.1:9200/shopping/_doc/1002

在这里插入图片描述

(6)删除文档数据【delete请求】

http://127.0.0.1:9200/shopping/_doc/1002

在这里插入图片描述

(7)根据条件查询文档数据【get请求】

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

在这里插入图片描述

(8)根据请求体查询文档数据【get请求,使用json报文请求】

http://127.0.0.1:9200/shopping/_search

在这里插入图片描述

(9)分页查询文档数据【get请求】
在这里插入图片描述

(10)多条件查询文档数据【get请求】

http://127.0.0.1:9200/shopping/_search

A:使用must,必须满足所有条件才会查询出来【相当于and】

{
   
    "query": {
   
        "bool": {
   
            "must": [
                {
   
                    "match": {
   
                        "category": "小米"
                    }
                },
                {
   
                    "match": {
   
                       "price": 3999.00
                    }
                }
            ]
        }
    }
}

B:使用should,则是满足其中一个即可【相当于or】

{
   
    "query": {
   
        "bool": {
   
            "should": [
                {
   
                    "match": {
   
                        "category": "小米"
                    }
                },
                {
   
                    "match": {
   
                       "price": 3999.00
                    }
                }
            ]
        }
    }
}

在这里插入图片描述

(11)范围查询文档数据【get请求】

http://127.0.0.1:9200/shopping/_search

{
   
    "query": {
   
        "bool": {
   
            "should": [
                {
   
                    "match": {
   
                        "category": "小米"
                    }
                }
            ],
            "filter":{
   
                "range":{
   
                    "price": {
   
                        "gt":4000  
                    }
                }
            }
        }
    }
}

条件:价格大于4000
在这里插入图片描述

(12)全文索引以及完全匹配查询文档数据【get请求】

http://127.0.0.1:9200/shopping/_search

--全文索引
{
   
    "query": {
   
        "match": {
   
            "category": "米"
        }
    }
}



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

--完全匹配
{
   
    "query": {
   
        "match_phrase": {
   
            "category": "米华"
        }
    }
}

在这里插入图片描述

–全文索引 【扩展:即模糊查询,es查询时会对条件文本进行拆解
在这里插入图片描述

–完全匹配
在这里插入图片描述

(13)高亮显示数据【get请求】

http://127.0.0.1:9200/shopping/_search

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

在这里插入图片描述

(14)聚合查询【get请求】

http://127.0.0.1:9200/shopping/_search

--分组查询
{
   
    "aggs": {
   
        "price_group": {
   
            "terms": {
   
                "field":"price"
            }
        }
    }
}
-----------------------------------------------------------------------------------------------------
--求平均值
{
   
    "aggs": {
   
        "price_avg": {
   
            "avg": {
   
                "field":"price"
            }
        }
    },
    "size":0  -不展示数据hits
}

在这里插入图片描述

–分组查询
在这里插入图片描述

–求平均值
在这里插入图片描述

(15)创建字段映射【字段约束】put请求

http://127.0.0.1:9200/user/_mapping

{
   
    "properties": {
   
        "name": {
   
            "type": "text",       --文本类型,可以根据其模糊查询
            "index": true
        },
        "sex": {
   
            "type": "keyword",   --必须完全匹配查询
            "index": true
        },
        "age": {
   
            "type": "keyword",
            "index": false        --不能根据其查询
        }
    }
}

–get查询:

http://127.0.0.1:9200/user/_search

在这里插入图片描述

3、es的java Api
A:简单操作
(1)依赖

implementation group: 'org.elasticsearch', name: 'elasticsearch', version: '7.8.0'
implementation group: 'org.elasticsearch.client', name: 'elasticsearch-rest-high-level-client', version: '7.8.0'

(2)创建连接
// 创建ES客户端

RestHighLevelClient esClient = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200, "http"))
);

// 关闭ES客户端

esClient.close();

(3)创建索引

public static void main(String[] args) throws Exception {
   

RestHighLevelClient esClient = EsUtils.getESClient();
// 创建索引
CreateIndexRequest request = new CreateIndexRequest("testdemo");
CreateIndexResponse createIndexResponse =
esClient.indices().create(request, RequestOptions.DEFAULT);

// 响应状态
boolean acknowledged = createIndexResponse.isAcknowledged();
System.out.println("索引操作 :" + acknowledged);
esClient.close();
}

(4)删除索引

public static void main(String[] args) throws Exception {
   

RestHighLevelClient esClient = EsUtils.getESClient();

// 查询索引
DeleteIndexRequest request = new DeleteIndexRequest("testdemo");

AcknowledgedResponse response = esClient.indices().delete(request, RequestOptions.DEFAULT);

// 响应状态
System.out.println(response.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值