Elasticsearch数据库的基本使用及ES健康状态red问题处理

安装好之后在浏览器装一个es-head-master的插件就可在浏览器直接访问es的可视化界面

我这边使用es主要是涉及了创建索引(index名称),删除索引(index名称),判断索引是否存在(index名称),查询全部索引,新增数据(索引名称,数据对象),删除数据(index名称,数据id),获取某一条数据(index名称,数据id),分页查询数据(index名称,数据id,分页参数)

 配置文件


# es
spring.elasticsearch.rest.uris=ip:9200
spring.elasticsearch.rest.connection-timeout=10s
spring.elasticsearch.rest.read-timeout=30s


我使用的ES依赖

        <dependency>
            <groupId>co.elastic.clients</groupId>
            <artifactId>elasticsearch-java</artifactId>
            <version>8.7.1</version>
        </dependency>

创建索引

@Resource
    public RestHighLevelClient restHighLevelClient;



public CommonResult CreateIndex(@RequestBody EsCreateVo esCreateVo) throws IOException {

        //判断索引是否存在
        GetIndexRequest requests = new GetIndexRequest(esCreateVo.getIndex());

        XContentBuilder mappingBuilder = XContentFactory.jsonBuilder();
        mappingBuilder.startObject();
        {
            mappingBuilder.startObject("properties");
            {
                mappingBuilder.startObject("id");
                {
                    mappingBuilder.field("type", "text");
                    mappingBuilder.field("analyzer", "standard");
                }
                mappingBuilder.endObject();
                mappingBuilder.startObject("name");
                {
                    mappingBuilder.field("type", "text");
                    mappingBuilder.field("analyzer", "standard");
                }
                mappingBuilder.endObject();
                mappingBuilder.startObject("time");
                {
                    mappingBuilder.field("type", "text");
                    mappingBuilder.field("analyzer", "standard");
                }
                mappingBuilder.endObject();
                mappingBuilder.startObject("content");
                {
                    mappingBuilder.field("type", "text");
                    mappingBuilder.field("analyzer", "standard");
                }
                mappingBuilder.endObject();
            }
            mappingBuilder.endObject();
        }

        boolean exists = restHighLevelClient.indices().exists(requests, RequestOptions.DEFAULT);
        if (!exists) {
            CreateIndexRequest request = new CreateIndexRequest(esCreateVo.getIndex());
            request.mapping(mappingBuilder);
            CreateIndexResponse response = restHighLevelClient.indices().create(request, RequestOptions.DEFAULT);
            //判断是否创建成功
            boolean acknowledged = response.isAcknowledged();
            return acknowledged ? new CommonResult().success() : new CommonResult().failed("创建分类失败!");
        }
        return new CommonResult().failed("分类已存在!");
    }

mappingBuilder.startObject() 是在创建索引的时候把索引中字段映射关系提前新建,不这样做的话,如果你查询的时候用了一些特定的条件的话,会报错(当新建索引,而且索引中没有添加过数据的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值