关于各个组件安装教程可以参考网上的教程有很多   建议用docker安装否则需要前端环境等有些麻烦


ElasticSearch介绍

Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。 通过简单的 RESTful API 来隐藏 Lucene 的复杂性,从而让全文搜索变得简单。本身扩展性好,可以扩展到上百台服务器,处理 PB 级别的数据。

ElasticSearch 与 Solr 的区别

1、ElasticSearch 开箱即用,Solr 需要安装。
2、Solr 利用 Zookeeper 进行分布式管理,而 ElasticSearch 自身带有分布式协调管理功能。
3、Solr 支持更多格式的数据,例如 JSON、XML、CSV,而 ElasticSearch 仅支持 JSON 文件格式。
4、Solr 官方提供的功能更多,而 ElasticSearch 本身更注重于核心功能,高级功能多由第三方插件提供,例如图形化界面需要 kibana 友好支撑。
5、Solr 查询快,但更新索引时慢,用于电商等查询多的应用。ElasticSearch 建立索引快即实时性查询快,用于 facebook、新浪等搜索应用。
6、Solr 是传统搜索应用的有力解决方案,ElasticSearch 更适用于新兴的实时搜索应用。

ElasticSearch 核心概念

ElasticSearch 是面向文档的索引,ElasticSearch 与关系型数据库的对比:

ElasticSearch 本身就是集群,可以通过可视化界面右上角你的信息查看。ElasticSearch 的默认集群名就是 elasticsearch。ElasticSearch 在后台把每个索引划分成多个分片,每分分片可以在集群中的不同服务器间迁移。

文档:一条条数据和记录,是索引和搜索数据的最小单位,是键值对,是 Json 对象。
类型:字段类型映射,逐渐过时,因为 ElasticSearch 会自动猜测类型。
索引:映射类型的容器,文档集合,类似于数据库,会被存储到各个分片上。
分片:一个索引默认有5个分片,主分片和对应的复制分片都不会在同一个节点内,这样有利于某个节点挂掉了,数据也不至于丢失。实际上,一个分片是一个 Lucene 索引,一个包含倒排索引的文件目录。倒排索引的结构使得 ElasticSearch 在不扫描全部文档的情况下,就能告知哪些文档中包含特定的关键字。

倒排索引

ElasticSearch 使用的是一种称为倒排索引的结构,采用 Lucene 倒排索引作为底层。这种结构适用于快速的全文搜索,一个索引由文档中所有不重复的列表构成,对于每一个词,都有一个包含它的文档列表。文档保存到索引库的时候,将每个文档拆分成独立的词(或称为词条或 tokens ),创建包含所有不重复的词条的排序列表,列出每个词条出现在哪个文档,两个文档都匹配,但是第一个文档比第二个匹配程度更高。如果没有别的条件,这两个包含关键字的文档都将返回。

IK 分词器

IK 提供了两个分词算法:ik_smart 和 ik_max_word。其中 ik_smart 为最少切分,ik_max_word 为最细粒度划分。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
    <comment>IK Analyzer 扩展配置</comment>
    <!--用户可以在这里配置自己的扩展字典 -->
    <entry key的扩展停止词字典-->
    <entry key="ext_stopwords"></entry>
    <!--用户可以在这里配置远程扩展字典 -->
    <!-- <entry key="remote_ext_dict">words_location</entry> -->
    <!--用户可以在这里配置远程扩展停止词字典-->
    <!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>

记得重启es

字段类型概述

字符串类型:text、keyword
数值类型:long、integer、short、byte、double、float、half float、scaled、float
日期类型:date
布尔值类型:boolean
二进制类型:binary

  字符串类型ElasticSearch对字符串拥有两种完全不同的搜索方式. 你可以按照整个文本进行匹配, 即关键词搜索(keyword search), 也可以按单个字符匹配, 即全文搜索(full-text search).前者的字符串被称为not-analyzed字符, 而后者被称作analyzed字符串。text用于全文搜索的, 而keyword用于关键词搜索.

text

当一个字段是要被全文搜索的,比如Email内容、产品描述,应该使用text类型。设置text类型以后,字段内容会被分析,在生成倒排索引以前,字符串会被分析器分成一个一个词项。text类型的字段不用于排序,很少用于聚合。

PUT my_index
{"mappings": {"_doc": {"properties": {"name": {"type": "text"}}}}}
}

如果不指定类型,ElasticSearch字符串将默认被同时映射成text和keyword类型,会自动创建下面的动态映射(dynamic mappings):

{"foo": {"type": "text","fields": {"keyword": {"type": "keyword","ignore_above": 256}}}}

ignore_above忽略长度超过256字符串。

这就是造成部分字段还会自动生成一个与之对应的“.keyword”字段的原因。

一个字符串字段可以映射为text字段用于全文本搜索,也可以映射为keyword字段用于排序或聚合,这时候需要用到fields设置多字段。如果业务关系中,需要该字段支持两种类型的查询,可以设置为如下形式:

PUT my_index
{"mappings": {"_doc": {"properties": {"name": {"type": "text","fields": {"raw": { "type":  "keyword"}}}}}}
}

name.raw字段是name字段的keyword版本。

keyword

keyword类型适用于索引结构化的字段,比如email地址、主机名、状态码和标签。如果字段需要进行过滤(比如查找已发布博客中status属性为published的文章)、排序、聚合。keyword类型的字段只能通过精确值搜索到。

{"foo": {"type": "text","fields": {"keyword": {"type": "keyword","ignore_above": 256}}}
}

在ES里为已有索引增加一个新字段以后,老的数据并不会自动就拥有了这个新字段,也就不可能给他一个所谓的默认值。ES里的数据都是文档型的,修改一个文档只能是对原文档做更新,也就是只能借助于重新索引的手段。
 
NULL在ES里的含义和RDBMS非常不同。 
 
NULL的意思是索引的时候,某个字段没有被赋值,例如文档有"city","title"和"status_code"三个字段。
 
索引的时候漏掉status_code字段:

处理 Null 值 | Elasticsearch: 权威指南 | Elastic最好的笔记是官方文档,其他类型的字段就先不介绍了

关于索引的基本操作

创建索引:PUT /索引名/类型名/文档id{请求体}

mappings类似与数据库建表时候指定字段,es中如果不指定es会默认猜帮你创建类型,类型名可以省略(表名)默认_doc 在以后版本可能会被废弃

获取索引信息:GET 索引名

查看 ElasticSearch 集群的健康值:GET _cat/health

更新索引

方法一:重新 PUT,版本号增加,状态变为 updated

方法2:使用 POST,只更新其中一个字段,可以防止更新时数据遗漏

删除索引 delete 只能删除文档或索引,不能删除类型

批量增删改查BULK,必须是POST请求

关于文档的基本操作

上边这是查询方式之一 还有一种dsl操作

hits里面包含了索引的文档的id的信息,里面_source包含了数据,_sorce是指分数,即匹配度,越高的越前

排序

分页

from size 有点像limit start pagesize

boolen值查询

上边换成should相当于mysql中的or

范围查询

匹配多个值

精确查找是term 是使用倒排索引精确查找

ES整合springData

导入依赖

配置文件

DAO

实体类映射操作

测试索引操作

文档操作

分页查询

文档搜索

关于ElasticSearch(es) 的基本使用教程总结(全)相关推荐

  1. linux es数据库 head,centos7安装Elasticsearch及Es-head插件详细教程(图文)

    懒惰了很久,今天来写一下Elasticsearch在centos7上安装教程以及安装过程中可能出现的报错解决方式,有不对的地方,烦请各位看官多多指教! 一.ES安装 1.环境检查 确保有java环境, ...

  2. java search 不能使用方法_ElasticSearch实战系列三: ElasticSearch的JAVA API使用教程

    前言 在上一篇中介绍了ElasticSearch实战系列二: ElasticSearch的DSL语句使用教程---图文详解,本篇文章就来讲解下 ElasticSearch 6.x官方Java API的 ...

  3. Elasticsearch全文搜索引擎-PHP使用教程。

    1.声明依赖关系:         比方说,你的项目中需要一个php版的elasticsearch框架.为了将它添加到你的项目中(下载),你所需要做的就是创建一个 composer.json 文件,其 ...

  4. [Elasticsearch] es 6.6 编译报错 SSL peer shut down incorrectly

    1.概述 前提:[Elasticsearch] es 6.6 编译报错 java.net.ConnectException: Operation timed out Mac 编译es 6.8 报错 [ ...

  5. ElasticSearch (ES)学习之路(二)Win10安装ES,可视化界面,Kibanna

    ElasticSearch (ES)学习之路(二)Win10安装ES,可视化界面,Kibanna 我前一段时间学习的时候ES 还是7.6.x 现在看ES 官网已经到了7.8.X了,迭代维护的速度还是挺 ...

  6. ElasticSearch es 插件开发

    ElasticSearch es 插件开发 1. 插件分类 API Extension Plugins API扩展插件 通过添加新的API或功能向Elasticsearch添加新功能,通常与搜索或映射 ...

  7. ElasticSearch(ES)

    文章目录 备注.必看 ElasticSearch 和 Solr 介绍,对比 ElasticSearch 7.8. 官网 基本概念 Cluster(集群) 与 Node(节点) Index -索引 索引 ...

  8. OpenGL ES像素着色器教程

    OpenGL ES像素着色器教程 时间 2014-08-27 09:54:51   泰然 原文   http://www.tairan.com/archives/7509 主题  OpenGL ES ...

  9. Elasticsearch(ES)的下载与安装

    Elasticsearch(ES)的下载与安装 1.安装 Java 在安装 Elasticsearch 之前,我们需要安装并配置好 JDK, 设置好环境变量 $JAVA_HOME. Elasticse ...

最新文章

  1. 申请服务器就是申请虚拟主机吗,申请一个虚拟主机和云主机哪个更好呢?
  2. Zookeeper可视化工具PrettyZoo
  3. 华擎 j3455 时钟 linux,J3455安装centos步骤
  4. 苹果折叠iPhone终于有动作了!已送样至富士康,售价将超万元
  5. 前端诸神大战,Vue、React 依旧笑傲江湖
  6. C# WebService 上传图片
  7. 收据找不到怎么退押金_押金收据单不见了,能退押金吗,合同上有写押金多少的 - 找法网免费法律咨询...
  8. 一盘商家一盘货,拼多多为什么比手淘便宜?
  9. html5 牧场游戏,手机QQ首批五款HTML5游戏名单 农场偷菜复活
  10. 艾草减肚子方法非常有效 赛乐赛骗局是真的吗
  11. 小葵花妈妈课堂开课了:《Runnable、Callable、Future、RunnableFuture、FutureTask 源码分析》
  12. Testbench的激励添加和书写技巧
  13. canvas 水墨画效果
  14. Mingle 2.0 发布了
  15. 热力学分布用matlab,matlab在热物理学中的应用.doc
  16. Oracle期末复习1
  17. MySQL表sql语句增删查改_学会这些操作你就不会栓Q(狗头)
  18. 4 种最安全的 MacBook 电池更换选项
  19. 超低功耗研发-STM32L151C8T6芯片(三)RTC自动唤醒机制
  20. 《离散数学》每章内容及其重点梳理

热门文章

  1. thinkpadE440 U盘安装mac10.9.4 Gpt分区+Clover+UEFI引导成功记录
  2. windows cmd命令使用ls
  3. 巅峰战舰服务器维护中,维护公告~
  4. [golang gin框架] 24.Gin 商城项目-redis讲解以及操作
  5. 多线程编程的初步形象化理解
  6. 使用HBuilder打包Android和iOS,并上线
  7. workman的学习总结
  8. B轮融资22亿元 巨头纷纷站台,何小鹏感慨:互联网利润真高! | 聚焦
  9. Pygame学习笔记13:Dungeon角色扮演游戏
  10. 设计师的自我修养-7大习惯让你拥有创意头脑