ElasticSearch安装与基本使用**

官网地址: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

点击小三角运行之后,去客户端点击连接

3.语法

添加

语法: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.依赖

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.4.3</version><relativePath/></parent><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId></dependency><dependency><groupId>commons-beanutils</groupId><artifactId>commons-beanutils</artifactId><version>1.9.4</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency>

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

domain

@Getter
@Setter
@ToString
@NoArgsConstructor
@AllArgsConstructor
@Document(indexName="es_shop", type="shop_product")
public class Product {@Idprivate 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<Product, String>{
}
public interface IProductService {void save(Product product);void update(Product product);void delete(String id);Product get(String id);List<Product> list();
}
@Service
public class ProductServiceImpl implements IProductService {@Autowiredprivate ProductRepository repository;@Autowiredprivate ElasticsearchTemplate  template;@Overridepublic void save(Product product) {repository.save(product);}@Overridepublic void update(Product product) {repository.save(product);}@Overridepublic void delete(String id) {repository.deleteById(id);}@Overridepublic Product get(String id) {return repository.findById(id).get();}@Overridepublic List<Product> list() {Iterable<Product> all = repository.findAll();List<Product> p = new ArrayList<>();all.forEach(a->p.add(a));return p;}
}
@SpringBootTest
public 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// 查询商品标题中符合"游戏 手机"的字样的商品@Testpublic void testQuery4(){NativeSearchQueryBuilder builder = new NativeSearchQueryBuilder();/*** {*     query:{*         match:{title:"游戏 手机"}*     }* }*/builder.withQuery(QueryBuilders.matchQuery("title", "游戏 手机"));builder.withPageable(PageRequest.of(0, 100));Page<Product> search = repository.search(builder.build());search.getContent().forEach(System.err::println);}- multi_match// 查询商品标题或简介中符合"蓝牙 指纹 双卡"的字样的商品@Testpublic void testQuery7(){NativeSearchQueryBuilder builder = new NativeSearchQueryBuilder();/*** {*     query:{*         multi_match:{*             "query":"蓝牙 指纹 双卡",*             "fields":["title", "intro"]*         }*     }* }*/builder.withQuery(QueryBuilders.multiMatchQuery("蓝牙 指纹 双卡", "title", "intro"));builder.withPageable(PageRequest.of(0, 100, Sort.Direction.DESC, "price"));Page<Product> search = repository.search(builder.build());search.getContent().forEach(System.err::println);}### 高亮显示@Test
public void testHighlight() throws Exception {//定义索引库SearchRequest searchRequest = new SearchRequest("product");SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();//定义query查询MultiMatchQueryBuilder queryBuilder = QueryBuilders.multiMatchQuery("蓝牙 指纹 双卡","title", "intro");HighlightBuilder highlightBuilder = new HighlightBuilder(); // 生成高亮查询器highlightBuilder.field("title");// 高亮查询字段highlightBuilder.field("intro");// 高亮查询字段highlightBuilder.requireFieldMatch(false); // 如果要多个字段高亮,这项要为falsehighlightBuilder.preTags("<span style='color:red'>"); // 高亮设置highlightBuilder.postTags("</span>");highlightBuilder.fragmentSize(800000); // 最大高亮分片数highlightBuilder.numOfFragments(0); // 从第一个分片获取高亮片段Pageable pageable = PageRequest.of(1, 2); // 设置分页参数NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(queryBuilder) // match查询.withPageable(pageable).withHighlightBuilder(highlightBuilder) // 设置高亮.build();SearchHits<Product> searchHits = template.search(searchQuery, Product.class);List<Product> list = new ArrayList();for (SearchHit<Product> searchHit : searchHits) { // 获取搜索到的数据Product content = searchHit.getContent();// 处理高亮Map<String, List<String>> highlightFields = searchHit.getHighlightFields();for (Map.Entry<String, List<String>> stringHighlightFieldEntry : highlightFields.entrySet()) {String key = stringHighlightFieldEntry.getKey();if (StringUtils.equals(key, "title")) {List<String> fragments = stringHighlightFieldEntry.getValue();StringBuilder sb = new StringBuilder();for (String fragment : fragments) {sb.append(fragment.toString());}content.setTitle(sb.toString());}if (StringUtils.equals(key, "intro")) {List<String> fragments = stringHighlightFieldEntry.getValue();StringBuilder sb = new StringBuilder();for (String fragment : fragments) {sb.append(fragment.toString());}content.setIntro(sb.toString());}}list.add(content);}Page page = new PageImpl(list, pageable, searchHits.getTotalHits());list.forEach(System.out::println);}

ingBuilder sb = new StringBuilder();

         for (String fragment : fragments) {sb.append(fragment.toString());}content.setTitle(sb.toString());}if (StringUtils.equals(key, "intro")) {List<String> fragments = stringHighlightFieldEntry.getValue();StringBuilder sb = new StringBuilder();for (String fragment : fragments) {sb.append(fragment.toString());}content.setIntro(sb.toString());}}list.add(content);}Page page = new PageImpl(list, pageable, searchHits.getTotalHits());list.forEach(System.out::println);

}


ElasticSearch、ki、head、kibana安装与基本使用相关推荐

  1. elasticsearch head、kibana 安装和使用

    一.概述 1.展示es数据的可视化工具 2.es head 可以当作数据展示查看的工具(数据概览),对于查询等操作使用kibana 二.安装es head 推荐参考文档:Elasticsearch教程 ...

  2. ELK入门——ELK详细介绍(ELK概念和特点、Elasticsearch/Logstash/beats/kibana安装及使用介绍、插件介绍)

    目录 主要参考链接 一.什么是ELK(端口9200) 主要特点: 1.存储:面向文档+JSON 2.检索:倒排+乐观锁 3.分析:监控+预警+可视化 4.支持集群 二.Logstash(端口5044) ...

  3. es(Elasticsearch)客户端Elasticsearch-head安装使用(04Elasticsearch-head安装篇)

    背景 elasticsearch-head是一款专门针对于elasticsearch的客户端工具,用来展示数据.elasticsearch-head是基于JavaScript语言编写的,可以使用npm ...

  4. Elasticsearch 及 Kibana 安装篇

    简介 官网-安装介绍 这里记载了各个软件包的安装方法,Linux Mac Windows-- 本文记载的是在 CentOS 系统安装 Elasticsearch 7.0.0 版本的步骤. 安装 Jav ...

  5. 【elasticsearch系列】windows安装kibana

    目录 环境 安装 配置文件 启动 环境 下载kibana版本,要与elasticsearch版本保持一致: 中文社区下载:https://elasticsearch.cn/download/ 安装 下 ...

  6. win7下Elasticsearch、Kibana安装

    Elasticsearch安装 下载 https://www.elastic.co/cn/downloads/past-releases#elasticsearch 这里下载elasticsearch ...

  7. 【elasticsearch】elasticsearch教程 es整合springboot教程 kibana安装教程 解决kibana访问404

    文章目录 linux安装es springboot-data整合es kibana安装 es和kibana配置账号密码 es的账号密码设置 kibana的账号密码设置 es高阶 分片策略 推迟分片分配 ...

  8. 【笔记】Kibana安装并结合Elasticsearch使用

    Kibana介绍: Kibana 是一种数据可视化和挖掘工具,可以用于日志和时间序列分析.应用程序监控和运营智能使用案例.它提供了强大且易用的功能,例如直方图.线形图.饼图.热图和内置的地理空间支持. ...

  9. Elasticsearch 6.2.2安装部署+kibana+HQ

    目录 Elasticsearch 6.2.2 安装 启动后测试 kibana HQ Elasticsearch 6.2.2 https://www.elastic.co/cn/downloads/pa ...

  10. Elasticsearch安装IK分词器,kibana安装是基本使用,DSL语句入门

    文章目录 1. 安装IK分词器 2. Kibana安装和使用 2.1 ELK概述 2.2 Kibana下载 2.3 DSL语句 1. 安装IK分词器 ElasticSearch 默认采用的分词器, 是 ...

最新文章

  1. python一个字母红了_Python练习:最后一个字母/第一个字母
  2. 一文读懂比特币现金(BCH)
  3. 关于nginx rewrtie的四种flag
  4. react native基本调试技巧
  5. http://blog.sina.com.cn/s/blog_458f3c010100n4st.html
  6. Ajax实现直链(点击量统计)
  7. 21-Heartbeat配置文件authkey重要参数讲解
  8. JUC多线程:AQS抽象队列同步器原理
  9. 下pg负载均衡_SAE 场景下,应用流量的负载均衡及路由策略配置实践
  10. 所有被td:last-child a影响到了的Spartacus表格
  11. leetcode968. 监控二叉树
  12. java 编写代码_Java 7:如何编写非常快速的Java代码
  13. redhat linux7.0的安装
  14. leetcode557. 反转字符串中的单词 III python,处理字符串的神!
  15. 飞鸽传书CSDN的搜索结果
  16. apache缓存php页面不改变,Apache服务器禁止静态文件缓存的实现方法
  17. docker 容器通过桥接方式绑定到宿主机无法访问另外一个docker容器
  18. webpack打包UMD学习记录
  19. javaFX2.0场景(Scene)分析及使用,多场景切换实现
  20. arduino惊喜盒子

热门文章

  1. 腾讯云TRTC —— 实时音视频完整案例 音视频+共享屏幕直播
  2. C# excel转换PDF 包括所有sheet
  3. 脾胃湿热吃什么药.体内湿气重有何表示 怎样去除
  4. 计算机计算公式单组数据求乘法,excel怎么算乘法
  5. python天天向上的力量三天打鱼两天晒网_017 示例3-天天向上的力量
  6. 工行u盾显示316_工行U盾无法被电脑识别(方法全集)
  7. CSFB和SRVCC概念解释
  8. 觉醒:游戏迷学了计算机
  9. 不再以讹传讹 剖析720P 1080i和1080P
  10. 一文彻底搞懂微服务架构