Elasticsearch

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: Elasticsearch

概述


ElasticSearch(简称为es)是一个开源的高扩展的分布式全文检索引擎,它可以近乎 实时存储、检索数据;


本身扩展性很好,可以扩展到上百台服务器,处理PB级别(大数据时代)的数据。es是使用java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的REST-ful的API来隐藏Lucene的复杂性,从而让全文搜索变得简单。


下载地址


ElasticSearch Kibana 安装 https://www.elastic.co/cn


es可视化界面:head的插件 https://github.com/mobz/elasticsearch-head/


启动head插件,访问9100端口


# 安装cnpm的命令

npm install -g cnpm -registry= https://registry.npm.taobao.org

# cnpm下载资源更快

cnpm install

npm run start

IK分词器插件 https://github.com/medcl/elasticsearch-analysis-ik/releases


字段类型


官网类型文档地址: https://www.elastic.co/guide/en/elasticsearch/reference/current/keyword.html

- 字符串类型

text、keyword

- 数值类型

long,integer,short,byte,double,float,half float,scaled float

- 日期类型

date

- te布尔值类型

boolean·

- 二进制类型

binary

- 等等……


集成Springboot

 <!--整合es-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
        </dependency>
        <!--es-->
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-high-level-client</artifactId>
            <version>7.6.1</version>
        </dependency>
        <!--fastjson-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.80</version>
        </dependency>

配置类

@Configuration
public class ElasticSearchConfig {
    @Bean
    public RestHighLevelClient restHighLevelClient(){
        RestHighLevelClient client=new RestHighLevelClient(
                RestClient.builder(new HttpHost("127.0.0.1",9200,"http"))
        );
        return client;
    }
}

创建索引

   CreateIndexRequest index = new CreateIndexRequest("index");
        CreateIndexResponse createIndexResponse = restHighLevelClient.indices().create(index, RequestOptions.DEFAULT);

添加文档

   User user = new User("学习", 25);
        IndexRequest index = new IndexRequest("index");
        index.id("1");
        index.timeout(TimeValue.timeValueSeconds(1));
        index.source(JSON.toJSONString(user), XContentType.JSON);
        IndexResponse indexResponse = restHighLevelClient.index(index, RequestOptions.DEFAULT);
        System.out.println(indexResponse.toString());

获取文档的信息

 GetRequest getRequest = new GetRequest("index","1");
        GetResponse getResponse = restHighLevelClient.get(getRequest, RequestOptions.DEFAULT);
        System.out.println(getResponse.getSourceAsString());

批量插入数据

        BulkRequest bulkRequest = new BulkRequest();
        bulkRequest.timeout("1s");
        ArrayList<User> users = new ArrayList<>();
        users.add(new User("yu",3));
        users.add(new User("hello",3));
        for (int i = 0; i < users.size(); i++) {
            bulkRequest.add(new IndexRequest("index")
                    .id(""+(i+1))// 不设置id,则会生成默认id
                    .source(JSON.toJSONString(users.get(i)),XContentType.JSON));
        }
        BulkResponse bulkResponse = restHighLevelClient.bulk(bulkRequest, RequestOptions.DEFAULT);
        System.out.println(bulkResponse.hasFailures());// 是否失败,返回false代表成功

查询

 SearchRequest searchRequest=new SearchRequest("index");
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        MatchQueryBuilder matchQueryBuilder = QueryBuilders.matchQuery("name", "狂神");
        searchSourceBuilder.query(matchQueryBuilder);
        searchRequest.source(searchSourceBuilder);
        SearchResponse search = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
        for(SearchHit searchHit:search.getHits().getHits()){
            System.out.println(searchHit.getSourceAsMap());
        }

注:本文为学习狂神ElasticSearch视频所做的笔记,详细链接https://www.kuangstudy.com/bbs/1501584046755880962

https://www.kuangstudy.com/bbs/1552226602677882882

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
2月前
|
存储 关系型数据库 MySQL
elasticsearch系列(一)
elasticsearch系列(一)
elasticsearch系列(一)
|
2月前
|
消息中间件 数据采集 Kafka
elasticsearch系列(二)
elasticsearch系列(二)
|
6月前
|
自然语言处理 Java 网络安全
ElasticSearch
ElasticSearch
77 2
|
6月前
|
搜索推荐 关系型数据库 MySQL
【Elasticsearch】初识elasticsearch
【Elasticsearch】初识elasticsearch
71 1
|
6月前
|
存储 JSON 监控
Elasticsearch简单讲解
Elasticsearch简单讲解
78 0
|
存储 缓存 索引
Elasticsearch(四)
Elasticsearch(四)
60 0
|
存储 关系型数据库 MySQL
Elasticsearch(二)
Elasticsearch(二)
62 0
|
存储 关系型数据库 MySQL
Elasticsearch(一)
Elasticsearch(一)
69 0
|
存储 Java 关系型数据库
一起来学ElasticSearch(九)
前言 目前正在出一个Es专题系列教程, 篇幅会较多, 喜欢的话,给个关注❤️ ~ 本节给大家讲下es中如何做聚合操作, 内容有点多,需要耐心看完~ 本文偏实战一些,好了, 废话不多说直接开整吧~ 什么是聚合 聚合的概念有点类似mysql中group by,sum(...),这么说大家可能就有点印象了, 但是在es中聚合操作功能更强大。 在了解es中聚合的概念之前,先来看下这两个概念, 聚合就是一个或多个桶和零个或多个指标的组合。