官网地址:https://www.elastic.co/cn/downloads/past-releases#elasticsearch
1.下载与安装先去官网下载自己需要的的版本这里我用的是7.10.2,Windows版本
还需要下载一个Kibana(可视化软件),要注意的是,版本需要跟上面下载的一样,不然会报错
然后再来一个分词器elasticsearch ik
下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v5.6.16
最后加上一个elasticsearch-head(客户端工具)
下载地址:https://github.com/mobz/elasticsearch-head
最后下载完会得到四个压缩包
首先解压第一个,注意安装路径不能带空格和中文
除了ik,,其他三个建议全部解压缩到磁盘根目录
ik解压到elasticsearch的plugins目录下
最后浏览器需要安装一个插件,以谷歌浏览器为例
访问chrome://extensions/
会得到一个这个
点击右边的就会出现当前页面
2.运行接下来就可以尝试跑起来了
双击这个目录下的这个文件,启动完成之后访问浏览器localhost:9200端口,看到以下页面就算安装成功了
5601
9200
点击小三角运行之后,去客户端点击连接
语法:PUT /索引名
在没有特殊设置的情况下,默认有1个分片,1个备份,也可以通过请求参数的方式来指定
参数格式:
默认:
PUT my_index
明确指定:
PUT /my_index{ "settings": {"number_of_shards": 5, //设置5个片区"number_of_replicas": 1 //设置1个备份 }}
注意:
1:索引不能有大写字母
2:参数格式必须是标准的json格式
查看单个GET /索引名
查看所有GET _cat/indices
删除语法:DELETE /索引名
设置映射(列)
创建
类型跟映射一起创建
语法:
PUT /索引名
{
“mappings”: {
“properties”: {
字段名: {
“type”: 字段类型,
“analyzer”: 分词器类型,
“search_analyzer”: 分词器类型,
…
},
…
}
}
}
字段类型就是:数据类型
创建数据
POST /product/_bulk
{“create”:{"_id": 1}}
{“id”:1,“title”:“Apple iPhone XR (A2108) 128GB 白色 移动联通电信4G手机 双卡双待”,“price”:5299,“intro”:"【iPhoneXR限时特惠!】6.1英寸视网膜显示屏,A12仿生芯片,面容识别,无线充电,支持双卡!选【换修无忧版】获 AppleCare 原厂服务,享只换不修!更有快速换机、保值换新、轻松月付!",“brand”:“Apple”}
GET /索引/_search{ "query": {"match": {field: value} }}
GET /product/_search{ "query": {"match":{ "title": "游戏 手机"} }}
multi_match参数格式:GET /索引/_search{ "query": {"multi_match": { "query": value, "fields": [field1, field2, ...]} }}
4.springboot集成 1.依赖application.properties
配置集群名称,名称写错会连不上服务器,默认elasticsearch
spring.data.elasticsearch.cluster-name=elasticsearch
配置集群节点
spring.data.elasticsearch.cluster-nodes=localhost:9300
是否开启本地存储
spring.data.elasticsearch.repositories.enabled=true
过期原因:
es官方打算在es7设置TransportClient 过期, es8之后抛弃, 直接使用 High Level REST Client 替换TransportClient
https://docs.spring.io/spring-data/elasticsearch/docs/3.2.3.RELEASE/reference/html/#reference
spring.elasticsearch.rest.uris = localhost:9200
@Getter@Setter@ToString@NoArgsConstructor@AllArgsConstructor@document(indexName="es_shop", type="shop_product")public class Product { @Id private String id; @Field(analyzer="ik_smart",searchAnalyzer="ik_smart",type = FieldType.Text) private String title; private Integer price; @Field(analyzer="ik_smart",searchAnalyzer="ik_smart",type = FieldType.Text) private String intro; @Field(type=FieldType.Keyword) private String brand;}
### CRUDpublic interface ProductRepository extends ElasticsearchRepository
@SpringBootTestpublic class ElasticsearchDemoApplicationTests {@Autowiredprivate IProductService productService;@Testpublic void testSave() {Product p = new Product(); p.setId("123")p.setBrand("dafei");p.setIntro("dafei手机");p.setPrice(1000);p.setTitle("全球最帅的手机");productService.save(p);}@Testpublic void testUpate() {Product p = new Product();p.setId("ue5r1m4BXlaPW5P0TegF");p.setBrand("dafei");p.setIntro("dafei手机");p.setPrice(1000);p.setTitle("全球最sb的手机");productService.update(p);}@Testpublic void testDelete() {productService.delete("123");}@Testpublic void testGet() {System.out.println(productService.get("123"));}@Testpublic void testList() {System.err.println(productService.list());}}### 各类查询- match // 查询商品标题中符合"游戏 手机"的字样的商品 @Test public void testQuery4(){ NativeSearchQueryBuilder builder = new NativeSearchQueryBuilder(); builder.withQuery( QueryBuilders.matchQuery("title", "游戏 手机") ); builder.withPageable(PageRequest.of(0, 100)); Page
ingBuilder sb = new StringBuilder();
for (String fragment : fragments) {sb.append(fragment.toString());}content.setTitle(sb.toString());}if (StringUtils.equals(key, "intro")) {List
}