java操作es(3)

本文介绍了如何在Linux虚拟机上设置静态IP地址以替换DHCP动态分配,包括编辑网络配置文件和重启网络服务。同时概述了使用JavaAPI在Elasticsearch中进行索引管理、文档操作和查询的方法。
摘要由CSDN通过智能技术生成
linux虚拟机固定ip,dhcp是动态分配ip
cd /etc/sysconfig/network-scripts/
vi ifcfg-ens33

##新增或者修改配置
OOTPROTO=static		#把地址协议改为静态IP方式
ONBOOT=yes					# 是否开机引导
IPADDR=192.168.11.130	#这个就是虚拟机的IP地址
NETM=255.255.255.0			#子网掩码
GATEWAY=192.168.11.2	#网关IP,前面设置NAT的时候填写的IP

## 重启网络设置
systemctl restart network  
es中的字段类型
type
text 会分词,math_phrase 就是contain
keyword 不会分词 就是全量的equals
字段的index默认为true,不设置索引不能够mathch查询

## 字段设置类型和索引
{
    "mappings": {
        "properties": {
            "name": {
                "type": "text",
                "index": true
            },
            "sex": {
                "type": "keyword",
                "index": true
            },
            "tel": {
                "type": "keyword",
                "index": false
            },
            "remark": {
                "type": "text",
                "index": false
            }
        }
    }
}
es需要依赖
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
		</dependency>


		<!-- https://mvnrepository.com/artifact/org.elasticsearch/elasticsearch -->
<!--		<dependency>
			<groupId>org.elasticsearch</groupId>
			<artifactId>elasticsearch</artifactId>
			<version>7.4.0</version>
		</dependency>-->


<!--		<dependency>
			<groupId>org.elasticsearch.client</groupId>
			<artifactId>elasticsearch-rest-high-level-client</artifactId>
			<version>7.4.0</version>
		</dependency>-->

java api操作elasticsearch
索引操作

创建索引

        RestHighLevelClient esclient = new RestHighLevelClient(RestClient.builder(new HttpHost("192.168.11.133",9200,"http")));

        CreateIndexRequest pages = new CreateIndexRequest("pages");
        CreateIndexResponse createIndexResponse = esclient.indices().create(pages, RequestOptions.DEFAULT);

        boolean acknowledged = createIndexResponse.isAcknowledged();
        System.out.println("操作结果:"+acknowledged);
        esclient.close();

查询索引

        RestHighLevelClient esclient = new RestHighLevelClient(RestClient.builder(new HttpHost("192.168.11.133",9200,"http")));

        GetIndexRequest pages1 = new GetIndexRequest("pages");
        GetIndexResponse getIndexResponse = esclient.indices().get(pages1, RequestOptions.DEFAULT);
        System.out.println(getIndexResponse.getAliases());
        System.out.println(getIndexResponse.getMappings());
        System.out.println(getIndexResponse.getSettings());

        esclient.close();

删除索引

        RestHighLevelClient esclient = new RestHighLevelClient(RestClient.builder(new HttpHost("192.168.11.133",9200,"http")));

        DeleteIndexRequest del = new DeleteIndexRequest("pages");
        AcknowledgedResponse delete = esclient.indices().delete(del, RequestOptions.DEFAULT);
        System.out.println(delete.isAcknowledged());
        esclient.close();
文档操作

新增数据 ,也是全量更新

        RestHighLevelClient esclient = new RestHighLevelClient(RestClient.builder(new HttpHost("192.168.11.133",9200,"http")));

        IndexRequest indexRequest = new IndexRequest();
        IndexRequest student = indexRequest.index("student").id("1595660");

        HashMap<String, Object> zhangsan = new HashMap<>();
        zhangsan.put("name","张三");
        zhangsan.put("age",28);
        zhangsan.put("tel","xxyyzz");
        student.source(JSON.toJSONString(zhangsan),XContentType.JSON);

        IndexResponse indexRes = esclient.index(student, RequestOptions.DEFAULT);
        System.out.println(indexRes.getResult());

        esclient.close();

局部更新

     RestHighLevelClient esclient = new RestHighLevelClient(RestClient.builder(new HttpHost("192.168.11.133",9200,"http")));
        UpdateRequest updateRequest = new UpdateRequest();
        UpdateRequest student = updateRequest.index("student").id("1595660");
        student.doc(XContentType.JSON,"age",219,"name","李四1221");   
        UpdateResponse updateResponse = esclient.update(student, RequestOptions.DEFAULT);
        System.out.println(updateResponse.getResult());
        esclient.close();

id查询文档

                RestHighLevelClient esclient = new RestHighLevelClient(RestClient.builder(new HttpHost("192.168.11.130",9200,"http")));
                GetRequest getRequest = new GetRequest();
                GetRequest student = getRequest.index("student").id("1");
                GetResponse documentFields = esclient.get(student, RequestOptions.DEFAULT);
                System.out.println(documentFields.getSourceAsString());
                esclient.close();

根据id删除文档

                RestHighLevelClient esclient = new RestHighLevelClient(RestClient.builder(new HttpHost("192.168.11.130",9200,"http")));
                DeleteRequest getRequest = new DeleteRequest();
                DeleteRequest student = getRequest.index("student").id("1");
                DeleteResponse delete = esclient.delete(student, RequestOptions.DEFAULT);
                System.out.println(delete.toString());
                esclient.close();

批量插入

                RestHighLevelClient esclient = new RestHighLevelClient(RestClient.builder(new HttpHost("192.168.11.130",9200,"http")));

                BulkRequest bulkRequest = new BulkRequest();
                bulkRequest.add(new IndexRequest().index("student").id("2").source(XContentType.JSON,"name","王路","age",14));
                bulkRequest.add(new IndexRequest().index("student").id("3").source(XContentType.JSON,"name","赵四","age",19));

                BulkResponse bulk = esclient.bulk(bulkRequest, RequestOptions.DEFAULT);
                System.out.println(bulk.getTook());
                System.out.println(bulk.getItems());
                esclient.close();

批量删除

                RestHighLevelClient esclient = new RestHighLevelClient(RestClient.builder(new HttpHost("192.168.11.130",9200,"http")));

                BulkRequest bulkRequest = new BulkRequest();
                bulkRequest.add(new DeleteRequest().index("student").id("2"));
                bulkRequest.add(new DeleteRequest().index("student").id("3"));

                BulkResponse bulk = esclient.bulk(bulkRequest, RequestOptions.DEFAULT);
                System.out.println(bulk.getTook());
                System.out.println(bulk.getItems());
                esclient.close();

全量查询数据

                RestHighLevelClient esclient = new RestHighLevelClient(RestClient.builder(new HttpHost("192.168.11.130",9200,"http")));

                SearchRequest searchRequest = new SearchRequest();

                SearchRequest student = searchRequest.indices("student");
                SearchSourceBuilder query = new SearchSourceBuilder().query(QueryBuilders.matchAllQuery());
                student.source(query);

                SearchResponse list = esclient.search(student, RequestOptions.DEFAULT);

                for (SearchHit hit : list.getHits()) {
                        System.out.println(hit.getSourceAsString());
                } 
                esclient.close();

组合查询(构建对应的builder)

bool组合(must必须, mustno不等于,should 或者)
form size分页
sort 排序
fetchsource 过滤和不过滤字段数组

range 范围查询  单独的  

fuzzy 匹配度差几个字符的模糊查询   英文分词器分不开时候用,总体不常用
pretag posttag field  highlightBuilder  高亮标记
aggregationBuilder 聚合求最大小值,平均值,分组查询
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值