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 聚合求最大小值,平均值,分组查询