ElasticSearch
文章平均质量分 75
ElasticSearch实时的海量数据搜索中间件
瘦子没有夏天
大家好,我是Leon。一个专业与Java领域的程序员,偶尔理理财。欢迎大家来阅读我博客,如果你发现极个别文章和书籍内容雷同,请叫我勤奋的code搬运工٩(๑❛ᴗ❛๑)۶。我的邮箱:gyoomi0709@foxmail.com
展开
-
Elasticsearch(039):es中搜索之排序
一、概述默认情况下,结果集会按照相关性进行排序 – 相关性越高,排名越靠前。为了使结果可以按照相关性进行排序,我们需要一个相关性的值。在ElasticSearch的查询结果中, 相关性分值会用_score字段来给出一个浮点型的数值,所以默认情况下,结果集以_score进行倒序排列.二、Es中排序使用2.1 简单排序例如下面的按照创建时间的倒序排序。GET example/docs/_search{ "query": { "match_all": {} }, "sort": [原创 2021-02-22 21:37:51 · 7106 阅读 · 0 评论 -
Elasticsearch(038):es中搜索之入门与分页搜索
ES中搜索的方式分为两种,一种是通过URL参数进行搜索;另一种是通过POST中body请求参数进行搜索。针对第一种我们进行简单的讲解,我们关注的核心放在第二种上面。一、简单搜索(search)1.1 测试使用的index、mapping及数据准备PUT examplePUT example/docs/_mapping{ "properties": { "id": { "type": "long" }, "orderN原创 2020-11-23 14:48:01 · 639 阅读 · 0 评论 -
Elasticsearch(037):es中批量操作之bulk
一、bulk概述1.1 bulk的基础概念bulk是es提供的一种批量增删改的操作API。1.2 bulk的语法bulk对JSON串的有着严格的要求。每个JSON串不能换行,只能放在同一行,同时,相邻的JSON串之间必须要有换行(Linux下是\n;Window下是\r\n)。bulk的每个操作必须要一对JSON串(delete语法除外)。{ action: { metadata }}{ request body }{ action: { metadata }}{ reques原创 2020-10-23 10:45:47 · 26141 阅读 · 3 评论 -
Elasticsearch(036):es中批量操作之mget(批量查询)
mget(批量查询)一、介绍mget是es提供的一种批量的读取操作的API。mget API允许根据索引,类型(可选)和id(以及可能的路由)获取多个文档。响应包括一个docs数组。该数组具有与原始多重获取请求相对应的所有提取文档(如果特定的get失败,则在响应中包含包含此错误的对象)。成功获取的结构与get API提供的文档的结构相似。二、示例用法2.1 测试数据准备示例索引结构如下PUT examplePUT example/docs/_mapping{ "properties"原创 2020-10-22 09:32:43 · 5269 阅读 · 0 评论 -
Elasticsearch(035):es中Document(文档)之修改文档
一、概述回顾前几个小节,我们学习了文档的新增、文档的删除、文档的查询。当然,在实际的使用,存在诸多场景对文档进行修改操作的需求,在这一小节中,我们来学习下ES中文档常见的修改api。二、全量更新(等于删除重建重新索引)2.1 说明这种是比较常见的,也就是覆盖更新。所谓的覆盖更新,就是是把原来的值都删掉,只保留新操作填充的字段值。(相当于删除了重新添加一个。其中可能除了id,其他的值可能都不相同)。示例如下。2.2 示例PUT example# 新建mappingPUT example/d原创 2020-09-29 11:48:42 · 4318 阅读 · 1 评论 -
Elasticsearch(034):es中Document(文档)之主键查询文档
一、概述在上一小节中,我们学习了文档的删除用法。当然,除了新增、删除之外,还有最重要的就是文档查询操作。es中的文档的查询操作有以下几类: 主键查询、DSL查询等等。二、查询文档(主键查询)2.1 语法查询GET index(索引名称)/type(type名称)/id(id的值)测试HEAD index(索引名称)/type(type名称)/id(id的值)这是一个测试方法。返回200和404状态码进行判断。2.2 使用查询id为2的用户的详情信息GET example原创 2020-09-21 16:10:46 · 2819 阅读 · 0 评论 -
Elasticsearch(033):es中Document(文档)之删除文档
一、概述在上一小节中,我们学习了文档的定义和新增语法。当然,有新增操作,相反的就会有删除操作。es中的文档的删除操作分为两类: 主键删除 和查询删除。二、删除文档(主键删除)示例: 下面操作的含义 删除id为1的文档记录。DELETE example/docs/1返回结果{ "_index": "example", "_type": "docs", "_id": "1", "_version": 2, "result": "deleted", "_shards": {原创 2020-09-04 14:42:58 · 8557 阅读 · 0 评论 -
Elasticsearch(032):es中Document(文档)之新增文档
一、概述文档是具体的数据记录,一个文档有点像数据库中的一条记录,文档必须包含在一个索引中。二、新增文档2.1 新增语法#新建映射PUT examplePUT example/docs/_mapping{ "properties": { "id": { "type": "long" }, "username": { "type": "text" }, "birt原创 2020-09-02 16:44:44 · 3624 阅读 · 0 评论 -
Elasticsearch(031):es中Meta-Fields(元数据类型)之概述(_source)
概述_source字段包含索引是原始的JSON文档内容,字段本身不建立索引(因此无法进行搜索),但是会被存储,所以当执行获取请求是可以返回_source字段。虽然很方便,但是_source字段的确会对索引产生存储开销,因此可以禁用_source字段。可以通过以下接口进行打开或关闭。PUT example/docs/_mapping{ "secilog": { "_source": { "enabled": false } }}原创 2020-08-05 10:11:50 · 770 阅读 · 1 评论 -
Elasticsearch(030):es中Meta-Fields(元数据类型)之概述(_routing)
1. 概述先说明此参数在使用一些高级的ES的特性的时候,经常用到,请认真理解。文档在索引中利用下面的公式路由到特定的分片:shard_num = hash(_routing) % num_primary_shards,_routing字段的默认值使用的文档的_id字段。如果存在父文档,则使用文档的_parent编号。可以通过为每个文档指定一个自定义的路由值来实现自定义的路由方式。2. 示例与理解mappping定义和数据插入PUT examplePUT example/docs/_ma原创 2020-07-01 21:21:06 · 1396 阅读 · 0 评论 -
Elasticsearch(029):es中Meta-Fields(元数据类型)之概述(_index)
1. 概述在多个索引中执行查询的时候,有时候需要添加子查询来关联特定的索引文档。_index字段可以匹配包含某个文档的索引。在term或terms查询,聚合,脚本以及排序的时候,可以访问_index字段的值。注意:_index是一个虚拟字段,不作为一个真实的字段添加到Lucene的索引中。这意味着可以在term或terms查询(任何可以重写term查询:如match.query_string,simple_query_string)中使用_index字段,但是不支持prefix、wildcard、原创 2020-07-01 21:13:17 · 778 阅读 · 0 评论 -
Elasticsearch(028):es中Meta-Fields(元数据类型)之概述(_id)
1. 概述每个文档都有一个_id唯一标识它的索引,该索引已建立索引,以便可以使用GET API或 ids query查找文档。不指定的话,es也会默认生成一个id字符串。_id查询经常用在一下查询中:term, terms,match,query_string,simple_query_string2. 示例Mapping定义和插入PUT examplePUT example/docs/_mapping{ "properties":{ "cityId":{"type"原创 2020-07-01 21:08:10 · 2491 阅读 · 0 评论 -
Elasticsearch(027):es中Meta-Fields(元数据类型)之概述(_field_names)
概述该_field_names字段会索引文档中所有包含非空值的字段名称。_field_names字段用于存在查询和缺失查询的情况下,查询指定指定字段拥有非空值的文档是否存在。注意:由于_field_names引入了一些索引时间开销,因此,如果要优化索引速度并且不需要exists查询,则可能需要禁用此字段。使用示例PUT examplePUT example/docs/_mapping{ "properties":{ "id":{"type": "long"},原创 2020-06-22 15:00:10 · 1576 阅读 · 0 评论 -
Elasticsearch(026):es中Meta-Fields(元数据类型)之概述(_all)
一、es中元数据类型概述es中总共包含以下几种元数据参数。详细请看下表。后续的几个小节主要学习ES自带的一些元数据类型及其含义。每个文档都有与之关联的元数据,例如_index,_type和_id元字段。其次,创建映射类型时,可以自定义其中一些元字段的行为。二、 _all在6.0.0中已弃用。在这里不做过多介绍,也不推荐在实际项目中使用。...原创 2020-04-19 16:31:27 · 909 阅读 · 0 评论 -
Elasticsearch(025):es常见的字段映射类型之单词计数类型(token count)
概述单词计数数据类型。类型字段token_count实际上是一个integer接受字符串值,对其进行分析,然后为字符串中的单词数量作为其值进行动态存储。如果不是很理解上面那句话的话,来让我们看个例子吧。示例1. 映射定义PUT examplePUT example/docs/_mapping{ "properties":{ "name":{ ...原创 2020-04-11 21:45:22 · 1464 阅读 · 0 评论 -
Elasticsearch(024):es常见的字段映射类型之 连接类型(join type)
join type概述出现的背景引出问题: “某头条新闻APP”新闻内容和新闻评论是1对多的关系?在ES6.X该如何存储、如何进行高效检索、聚合操作呢?1. ES6.X 新类型join产生背景Mysql中多表关联,我们可以通过left join 或者Join等实现ES5.X版本,借助父子文档实现多表关联,类似数据库中Join的功能;实现的核心是借助于ES5.X支持1个索引(index)...原创 2020-04-06 19:49:24 · 2553 阅读 · 1 评论 -
Elasticsearch(023):es常见的字段映射类型之IP类型
概念es中拥有IP数据类型。一个ip字段可以索引/存储IPv4或 IPv6地址。示例我们先来看一个示例。1、映射创建PUT examplePUT example/docs/_mapping{ "properties":{ "id":{"type": "long"}, "browserName":{"type": "text"}, ...原创 2020-04-04 15:58:49 · 4296 阅读 · 0 评论 -
Elasticsearch(022):es常见的字段映射类型之地理形状类型(geo_shape、多边的复杂的地址形状)
概念在上个小节,我们学习了geo_point的数据类型。这一小节我们来学习geo_shape数据类型,它有助于索引和搜索 任意地理形状,例如矩形和多边形。当正在索引的数据或正在执行的查询包含除点以外的其他形状时,应使用它。通过上面的概念描述,我们可以得出geo_point和geo_shape的最大区别是: geo_point表示一个点;geo_shape则表示有多个点连成线组成的形状。 学过...原创 2020-03-22 15:13:02 · 4537 阅读 · 0 评论 -
Elasticsearch(021):es常见的字段映射类型之地理点类型(geo-point)
概念大家平时肯定经常美团、饿了吗类似的外卖软件。她其中最常见的功能就是附件的商家的功能。她这功能就能借助es来实现。es中的地理位置数据类型:该类型的字段接受经纬度对,进行使用。常见的使用场景在边界框内,中心点一定距离内或多边形内找到地理点以地理位置或距中心点的距离汇总文档将距离整合到文档的相关性分数中按距离对文档进行排序示例使用1、映射定义示例如下。PUT example...原创 2020-03-15 14:17:48 · 2848 阅读 · 0 评论 -
Elasticsearch(020):es常见的字段映射类型之二进制类型(binary)
概念二进制数据类型。该binary类型接受二进制值作为 Base64编码的字符串。该字段默认情况下不存储,并且不可搜索。该类型的字段可以作为对es的补充了解,实际开发中使用的较少。示例使用1、映射定义PUT examplePUT example/docs/_mapping{ "properties": { "id":{"type": "long"}, ...原创 2020-03-14 22:14:50 · 2825 阅读 · 0 评论 -
Elasticsearch(019):es常见的字段映射类型之数组类型(arrays)
在Elasticsearch中,没有专用的array数据类型。默认情况下,任何字段都可以包含零个或多个值,但是,数组中的所有值都必须具有相同的数据类型。这一点是区别于nested的,nested指的对象的集合。而arrays则是单一类型的数组集合而已。此外,不需要专门的类型类定义数组类型。例如:字符串数组 ["one", "two"]整数数组 [ 1,2]数组的数组:[ 1[ 2...原创 2020-03-08 20:13:55 · 20223 阅读 · 5 评论 -
Elasticsearch(018):es常见的字段映射类型之范围类型(range)
范围类型(range)是es中比较具有特色的数据类型。下面我们就先来看看官方对其的定义。定义数字范围类数据。主要类型及范围如下。数据范围类型的使用映射定义假设我们有一张会议表。我们知道实际中党政机关会议都有一个出席率的问题,需要出席率在某个点或某个区间内才能算作是有效的。所以我们的映射结构来了。示例如下。PUT examplePUT example/docs/_mapping{...原创 2020-03-07 19:27:11 · 7077 阅读 · 0 评论 -
Elasticsearch(017):es常见的字段映射类型之嵌套类型(nested)
es中的嵌套类型(nested)nested之前在对象类型(object)小节中,我们提到假如需要索引字段是对象数组,而不是对象,这时我们需要使用嵌套数据类型。形如下面的示例数据结构。{ "group" : "fans", "user" : [ { "first" : "John", "last" : "Smith" }, { ...原创 2020-03-01 17:16:21 · 7383 阅读 · 0 评论 -
Elasticsearch(016):es常见的字段映射类型之对象类型(object)
对象类型(object)JSON文档本质上是分层的:文档可能包含内部对象,而内部对象又可能包含内部对象本身。例如其下这个例子。PUT example/docs/1{ "region": "CN", "manager": { "age": 22, "name": { "first": "李", "l...原创 2020-02-29 18:54:18 · 7044 阅读 · 1 评论 -
Elasticsearch(015):es常见的字段映射类型之数字类型(numeric)
简介es支持一下long, integer, short, byte, double, float, half_float, scaled_float常见的数字类型。示例#给example索引添加字段映射,默认docs类型PUT example/docs/_mapping{ "properties": { "id":{ "type":"long" },...原创 2020-02-15 18:13:00 · 8952 阅读 · 0 评论 -
Elasticsearch(014):es常见的字段映射类型之date(日期类型)
文章目录定义示例使用总结定义es中表示日期的类型。日期类型不用设置分词器。 通常日期类型的字段用于排序。示例使用#给example索引新增一个birthday字段,类型为date, 格式可以是yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss#添加日期类型的映射PUT test_label_supplier/docs/_mapping{ "properties":...原创 2020-02-09 16:40:48 · 13395 阅读 · 0 评论 -
Elasticsearch(013):es常见的字段映射类型之keyword(关键字)
文章目录一、概述二、使用上个小节我们了解了text全文本类型。下面我来学习es中另外一种重要的字符串类型keyword。一、概述关键字。关键字是个精准值,通常用于过滤、排序、参与聚合等。关键字不参与分词。二、使用上边介绍的text文本字段在映射时要设置分词器,keyword字段为关键字字段,通常搜索keyword是按照整体搜索,所以创建keyword字段的索引时是不进行分词的,比如:邮政...原创 2020-01-19 15:26:04 · 11246 阅读 · 0 评论 -
Elasticsearch(012):es常见的字段映射类型之text(全文本)
es中字符串类型text(全文本)导语从本小节开始我们开始学习es中常用的元数据类型和字段映射,学习和理解它们可以有助于理解es及其工作机制。其主要分为两大类。其一,元字段,元字段用于ES对每个文档自带的元数据结构,包括 _index,_type, _id,和_source等等构成。针对这一类,着重讲解它们所代表的意思和一些使用。其二,就是字段类型(也叫属性),其包括的类型比较多,如下图...原创 2020-01-16 21:31:31 · 7034 阅读 · 0 评论 -
Elasticsearch(011):es映射(mapping)的创建、修改、删除等操作
文章目录1. 新建映射2. 查看单个索引下的映射3. 修改映射4. 删除映射5. 查询所有索引的映射6. 查询某个索引下某个字段的映射映射(Mapping)本小节主要学习映射的相关操作。1. 新建映射#给example索引添加字段映射,默认docs类型PUT example/docs/_mapping{ "properties": { "id":{ "type"...原创 2020-01-13 09:28:06 · 13208 阅读 · 4 评论 -
Elasticsearch(010):es中中文分词器IK-Analyzer实战
中文分词器(IK-Analyzer)1. 下载ik分词器网址:https://github.com/medcl/elasticsearch-analysis-ik下载对照ES版本的分词器版本。注意ik分词器的版本需要es保持一致。2. 安装分词器将分词器拷贝到服务器的ES安装目录plugins文件夹下,新建ik文件夹,解压到其中即可。三台机器分别执行一样的操作,然后重新启动es...原创 2020-01-07 23:09:38 · 1028 阅读 · 0 评论 -
Elasticsearch(009):es中index(索引)的新增、修改、删除、关闭等操作
文章目录索引(Index)1. 添加索引2. 获取索引3. 修改索引4. 删除索引5. 打开/关闭索引6. 获取所有索引列表索引(Index)本篇文章主要学习索引的相关操作。1. 添加索引PUT example{ "settings" : { "index" : { "number_of_shards" : 2, #设置分片的数量,在集群中...原创 2020-01-03 18:31:38 · 5835 阅读 · 0 评论 -
Elasticsearch(008):es中cluster(集群)的查看、状态、操作
集群(Cluster)本篇文章主要学习Elastic-Search集群的相关操作。1. 检查集群健康状态GET /_cat/health?v返回结果epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wai...原创 2020-01-03 18:23:22 · 5707 阅读 · 0 评论 -
Elasticsearch(007):es中集群、分片等基本概念
文章目录1. 近实时(near realtime)2. 集群(cluster)3. 节点(node)4. 索引(index)5. 类型(type)6. 文档(document)7. 分片和副本(shards&replicas)Elastic-Search的基础概念有一些概念是Elasticsearch的核心。从一开始就理解这些概念将极大地帮助简化学习过程。1. 近实时(near re...原创 2020-01-01 18:02:30 · 1625 阅读 · 0 评论 -
Elasticsearch(006):es中filtered和filter的区别
文章目录1. bool 和 filtered2. filter的两种用法1. bool 和 filteredes 5.0版本更新后,filtered的查询将替换为bool查询。filtered是比较老的的版本的语法。现在目前已经被bool替代。推荐使用bool。官方文档地址:链接2. filter的两种用法嵌套在bool下{ "query": { "bool": ...原创 2019-12-24 09:06:11 · 5269 阅读 · 1 评论 -
Elasticsearch(005):es集群中Kibana可视化平台
1. 下载Kibana安装包略推荐使用华为的镜像资源站(我比较常用,而且常见的资源也比较全):华为镜像资源站Kibana 的版本需要和 Elasticsearch 的版本一致。以免不同版本之间造成各种意外错误。2. 上传安装包并解压tar -xvf kibana-6.5.4-linux-x86_64.tar.gzcd kibana-6.5.4-linux-x86_64/3. 修改...原创 2019-12-19 17:50:41 · 705 阅读 · 0 评论 -
Elasticsearch(004):安装head插件来监控es集群
文章目录1. 安装node.js1.1 安装gcc,make,openssl,wget1.2 下载源代码包1.3 解压源代码包1.4 编译1.5 测试2. 下载并配置Git2.1 检查有没有安装git2.2 安装git2.3 测试3. 下载并运行head插件1. 安装node.js1.1 安装gcc,make,openssl,wgetyum install -y gcc make gcc-c...原创 2019-12-18 22:16:38 · 583 阅读 · 1 评论 -
Elasticsearch(003):es分布式集群搭建中可能出现的问题
一、root用户运行报错Exception in thread "main" java.lang.RuntimeException: don't run elasticsearch as root.解决方法:#添加es用户useradd es#给es用户授权目录权限chown es:es -R /usr/es/# 切换到es用户运行接口su es# 执行即可./elastic...原创 2019-12-16 22:30:32 · 529 阅读 · 0 评论 -
Elasticsearch(002):分布式集群搭建、管理之ES集群搭建与配置---2019最新版
Elasticsearch(二):分布式集群搭建、管理之ES集群搭建与配置2019最新版1.2 安装和配置Elastic-Search集群1.2.1 下载ES、Kibana、LogStash的安装包elasticsearch-6.5.4.tar.gzkibana-6.5.4-linux-x86_64.tar.gzlogstash-6.5.4.tar.gz1.2.2 将上述的安装包上传...原创 2019-11-25 15:29:29 · 649 阅读 · 0 评论 -
Elasticsearch(001):分布式集群搭建、管理之JDK环境搭建---2019最新版
Elasticsearch(一):分布式集群搭建、管理之JDK环境搭建2019最新版1.1 安装和配置JDK卸载系统自带的OpenJDK以及相关的java文件查看系统自带的OpenJDK版本信息java -version或者rpm -qa | grep java如果有安装jdk,可以删除;下面这几个可以删除例如:rpm -e --nodeps xxxx#单个卸载rpm -...原创 2019-11-25 15:26:02 · 692 阅读 · 0 评论 -
Elasticsearch(000):es文章目录
Elasticsearch(零):ES系列目录接口一、Elastic-Search的安装1.1 安装和配置JDK1.2 安装和配置Elastic-Search集群1.3 可能出现的问题1.4 安装head插件来监控ES集群1.4.1 安装node.js1.4.2 下载并配置Git1.4.3 下载并运行head插件1.5 安装Kibana可视化平台二、Elastic-Search...原创 2019-11-25 15:14:50 · 889 阅读 · 0 评论