广告
返回顶部
首页 > 资讯 > 数据库 >Elasticsearch简介
  • 763
分享到

Elasticsearch简介

Elasticsearch简介 2014-08-14 00:08:43 763人浏览 绘本
摘要

  疫情已经持续了好几个月了,作为程序员滴我们也帮不上什么忙,只有老老实实呆在家里或者出门一定戴口罩准守一些规则,不给国家添乱。不过最近疫情开始有所扭转,但是还是对国家经济,对企业业务造成了很大的影响,我也被停止了实习。接下来,可

Elasticsearch简介

  疫情已经持续了好几个月了,作为程序员滴我们也帮不上什么忙,只有老老实实呆在家里或者出门一定戴口罩准守一些规则,不给国家添乱。不过最近疫情开始有所扭转,但是还是对国家经济,对企业业务造成了很大的影响,我也被停止了实习。接下来,可能会面临着失业,破产等等严肃的问题。但是我们还是需要继续学习,提高自己的竞争力,才能在疫情过后,有自己的一席之地,可以在合适自己的地方发挥自己的作用。中国加油,武汉加油。

全文检索elasticsearch

1. 相关特点:

  • 分布式,无需人工搭建集群(solr需要人为配置,使用ZooKeeper作为注册中心)
  • Restful风格,一切api都遵循Rest原则,容易上手
  • 实时搜索,数据更新在ElasticSearch中几乎是完全同步的。

2. 操作索引

  1. 基本概念:Elasticsearch是基于Lucene的全文检索库,本质也是存储数据,很多概念与Mysql类似的。
  2. // 对比关系
    索引集(indices)------------------------------------------------Databases 数据库 类型(type)---------------------------------------------Table 数据表 文档(Document)-----------------------------Row 行 字段(Field)----------------------Columns列

     

  3. 相关解释:
    • 类型(type):一个索引库下可以有不同类型的索引,比如商品类型、订单类型,其数据格式不同。不过这回导致索引库混乱,因此未来版本会移除这个概念。
    • 映射配置(mappings):字段的数据类型、属性、是否索引、是否存储等特性。
    • 分片(shard):数据拆分后的各个部分。
    • 副本(replica):每个分片的复制。
    • 注意:Elasticsearch本身就是分布式的,因此即使你只有一个节点,Elasticsearch默认也会对你的数据进行分片和副本操作,当你向集群添加数据时,数据也会在新加入的节点中进行平衡。
a、创建索引:
  • 请求方式:PUT
  • 请求路径:ip地址:端口号/索引库名(下文相关 Http请求路径 省略)
  • 请求参数:JSON格式
  • 例子:
    {
           // settings: 索引库的设置。
    	"settings": {
    		"number_of_shards": 3,     // 分片数量
    		"number_of_replicas": 2    // 副本数量
    	}
    }
b、删除索引
  • 请求方式:DELETE
  • 请求路径:/索引库名
c、查询索引
  • 请求方式:GET
  • 请求路径:/索引库名
d、创建映射字段
  • 请求方式:PUT
  • 请求路径:/索引库名/_mapping/类型名称
  • 请求参数:json格式
    • 例子:
      {
      	"properties": {
      		"字段名": {
      			"type": "类型",
      			"index": true,
      			"store": true,
      			"analyzer": "分词器"  // 分词器
      		}
      	}
      }
      
  • 相关解释
    • 类型名称:就是type的概念,类似于数据库中的不同表
    • 字段名:任意写,可以指定许多属性,例如
      • type类型,可以是String类型(text【可分词】、keyWord【不可分词】)、long、short、date、integer、object等。
        • 注意:如果存的是对象,比如:{girl: {name:"rose",age:21}} 会被处理成两个字段:girl.name和girl.age
      • index:是否索引,默认为true。如果索引,则可以用来搜索。
      • store:是否存储,默认为false。在Elasticsearch中,即便store设为false,也可以搜索到结果(原因:Elasticsearch在创建文档搜索时,会将文档中的原始数据备份,保存到一个叫做_source的属性中。而且我们可以通过过滤_source来选择那些需要显示,那些不显示。

3. 新增数据

  • 随机生成id
    • 请求方式:POST
    • 请求路径:/索引库名/类型名称
    • 请求参数: { "key":  "value" }
  • 自定义id
  • POST /索引库名/类型名称/id值
    {
    	...
    }
    
  • 智能判断:
    • solr:新增数据时,只能使用提前配置好映射属性的字段,否则会报错。
    • Elasticsearch:不需要给索引库设置任何mapping映射,它也可以根据你输入的数据来判断类型,动态添加数据映射。(如果存储的是String类型数据,ES无智能判断,它会存入两个字段。例如:存入一个name字段,智能形成两个字段  name: text类型    name.keyword: keyword类型)

4. 修改数据:

  • 请求方式: PUT
  • 请求路径:/索引库名/类型名称/id值
  • 注意:修改必须指定id。id对应的文档存在,则修改;id对应文档不存在,则新增。

5.  查询

  • 基本查询:
    GET /索引库名/_search
    {
    	"query": {
    		"查询类型": {
    			"查询条件":"查询条件值"
    		}
    	}
    }
    
    例子:  GET /article/_search
    {
    	"query": {
    		"match": {
    			"title": {
    				"query": "广州上海",
    				"operator":"and"
    			}
    		}
    	}
    }
    
    • 查询类型:
      • 查询所有(match_all)【全文检索】
      • 多字段查询(multi_match)
      • GET /索引库名/_search
        {
        	"query": {
        		"multi_match": {
        			"query": "查询内容",
        			"fields": ["查询字段1","查询字段2"]
        		}
        	}
        }
      • 词条匹配(term):查询被用于精确值匹配,这些精确值可能是数字、时间、布尔或者那些未分词的字符串推荐除了text以外的类型用term,减少分词带来的消耗,例
        GET /索引库名/_search
        {
        	"query": {
        		"term": {
        			"查询字段":"查询内容"
        		}
        	}
        }
      • 结果过滤:{ "_source" : [ "过滤字段1" , "过滤字段2" ] }。
        {
        	"_source": {
        		# "includes": "过滤字段"	# 和上面作用一样
        		"excludes":"排除过滤字段"
        	}
        }
  • 高级查询
    • 模糊查询(fuzzy)
    • 范围查询(range)
      GET /索引库名/_search
      {
      	"query": {
      		"range": {
      			"查询字段": {
      				"gte": 数值,	# 大于,可省略
      				"lte": 数值	# 小于,可省略
      			}
      		}
      	}
      }
    • 布尔查询和过滤
      GET /索引库名/_search
      {
      	"query": {
      		"bool": {
      			"must": [
      				{"match": {
      					"查询字段": "查询内容"
      				}}
      			],
      			"filter": {
      				"range": {
      					"过滤字段": {
      						"gte": 数值
      					}
      				}
      			}
      		}
      	}
      }
    • 排序
      "sort": [
      	{
      			"排序字段": {
      				"order": "desc"  # 降序排序
      			}
      	}
      ]
    • 分页: "from" : 数值   "size" : 数值

6. 聚合aggregations:实现对数据的统计、分析

  • 基本概念:包括多种类型,最常见的两种,一个叫 桶(bucket),一个叫 度量(metrics)
    • 桶:作用:是按照某种方式对数据进行分组,每一组数据在es中称为一个桶(组)。
      • Terms Aggregation:根据词条内容分组,词条内容完全匹配的为一组
      • Range Aggregation:数值和日期的范围分组,指定开始和结束,然后按段分组
      • Histogram Aggregation:根据数值阶梯(Inteval)分组
      • Date Aggregation:根据日期阶梯分组,例如:给定阶梯为周,会自动每周分为一组
      • GET /索引库名/_search
        {
        	"aggs": {
        		"桶分组名称": {
        			"桶分组方式": {	
        				"field": "分桶字段"
        			}
        		}
        	}
        }
    • 度量:分组完以后,一般会对组中的数据进行聚合运算,例如:求平均值、最大、最小、求和等,这些在es中称为度量
      • Avg Aggregation:求平均值
      • Max Aggregation:求最大值
      •  Min Aggregation:求最小值
      •  Percentiles Aggregation:求百分比
      •  Stats Aggregation:同时返回avg、max、min、sum、count等
      •  Sum Aggregation:求和
      • Top hits Aggregation:求前几
      • Value Count Aggregation:求总数
      • GET /索引库名/_search
        {
        	"aggs": {
        		"度量名称": {
        			"度量运算": {
        				"field": "运算字段"
        			}
        		}
        	}
        }
        
        例子:{
        	"size": 0,
        	"aggs": {
        		"popular_brand": {
        			"terms": {
        				"field": "make"
        			},
        		        "aggs": {
        				"price_avg": {
        					"avg": {
        						"field": "price"
        					}
        				}
        			}
        		}
        	}
        }
您可能感兴趣的文档:

--结束END--

本文标题: Elasticsearch简介

本文链接: https://www.lsjlt.com/news/4727.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Elasticsearch简介
      疫情已经持续了好几个月了,作为程序员滴我们也帮不上什么忙,只有老老实实呆在家里或者出门一定戴口罩准守一些规则,不给国家添乱。不过最近疫情开始有所扭转,但是还是对国家经济,对企业业务造成了很大的影响,我也被停止了实习。接下来,可...
    99+
    2014-08-14
    Elasticsearch简介
  • Elasticsearch 介绍及java集成
    一、Elasticsearch 基础介绍 ElasticSearch 是分布式实时搜索、实时分析、实时存储引擎,简称(ES), 成立于2012年,是一家来自荷兰的、开源的大数据搜索、分析服务提供商,为企业提供实时搜索、数据分析服务,支持PB...
    99+
    2023-09-23
    elasticsearch java 大数据
  • MongoDB(一):NoSQL简介、MongoDB简介
    1. NoSQL简介 1.1 什么是NoSQL NoSQL(NoSQL= Not Only SQL),意即“不仅仅是SQL",是一项全新的数据库理念,泛指非关系型的数据库。 1.2 为什么需要NoSQL 随着互联网web2.0网站的兴起,非...
    99+
    2019-07-31
    MongoDB(一):NoSQL简介 MongoDB简介
  • elasticsearch 简单使用【php版本】
    版本说明 本文是在es8.4.1下进行操作,同时已经安装了ik分词器。php操作es的库为​elasticsearch-php,github地址为: GitHub - elastic/elastics...
    99+
    2023-09-15
    elasticsearch php
  • Python~~简介介绍
    Python (英国发音:/paθn/ 美国发音:/paθɑn/), 是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于...
    99+
    2022-10-18
  • Docker简单部署ElasticSearch的方法
    这篇“Docker简单部署ElasticSearch的方法”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一...
    99+
    2022-10-19
  • 怎么用Docker简单部署ElasticSearch
    这篇文章主要介绍了怎么用Docker简单部署ElasticSearch的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用Docker简单部署ElasticSearch文章都会有所收获,下面我们一起来看看吧。一...
    99+
    2023-06-05
  • Nginx简介
    一、什么是Nginx Nginx是一个高性能的HTTP和反向代理Web服务器,同时也提供IMAP/POP3/SMTP服务。Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3/SMTP)代理服务器。Nginx...
    99+
    2023-10-11
    nginx 服务器 运维 Powered by 金山文档
  • IPv6简介
    IPv6仅仅只是“长”吗?IPv6的地址长什么样?平时我们是怎么使用IPv6的呢?编写网络程序的时候要怎么处理IPv6?且待本篇一一道来。 为什么需要IPv6 全球的IP地址由一个名字叫IANA(Internet Assigned Num...
    99+
    2023-01-31
    简介
  • python简介
    Python是一种开源的面向对象编程语言随着人工智能与大数据分析的火热,python也随之火热起来Python应用广泛,特别适用以下几个方面1.系统编程:提供API(Application Programming Interface,应用程...
    99+
    2023-01-30
    简介 python
  • DevOps简介
    DevOps 是一个完整的面向IT运维的工作流,以 IT 自动化以及持续集成(CI)、持续部署(CD)为基础,来优化程式开发、测试、系统运维等所有环节。     DevOps的概念 DevOps一词的来自于Development和Ope...
    99+
    2023-01-30
    简介 DevOps
  • Python 简介
    Python介绍与特点(自学python知识整理) Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计: Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于P...
    99+
    2023-01-31
    简介 Python
  • OpenCV简介
    OpenCV简介 OpenCV(开源计算机视觉库:http://opencv.org)是一个开源库,包含数百种计算机视觉算法。OpenCV 具有模块化结构,主要包括下列模块: 核心功能(core) - 定义基本数据结构的紧凑模块,包括密集多...
    99+
    2023-08-30
    opencv 人工智能 计算机视觉
  • Ajax简介
    一、Ajax简介 Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指⼀种创建交互式⽹⻚应⽤的⽹⻚开发技术。 Ajax 是⼀种⽤于创建快速动态⽹⻚的技术。 Aja...
    99+
    2023-09-02
    ajax javascript 服务器
  • argparse简介
    一、argparse简介 argparse 模块是 Python 内置的用于命令项选项与参数解析的模块,argparse 模块可以让人轻松编写用户友好的命令行接口,能够帮助程序员为模型定义参数。 ar...
    99+
    2023-09-01
    python
  • Zookeeper简介
    1.1 什么是zookeeper Zookeeper是一个分布式的、开源的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Apache Hadoop的一个子项目,主要是用来解决分布式应用中经常遇到的一些数据...
    99+
    2017-07-20
    Zookeeper简介
  • Redis 简介
    Redis 特性     1.速度快       官方给出的数字是读写性能可以达到10万/秒,当然这也取决于机器的性能。大致归纳速度快的四点原因如下:             # Redis 的所有数据都是放在内存中的,这也是最主...
    99+
    2021-08-02
    Redis 简介
  • Cassandra 简介
    Cassandra是云原生和微服务化场景中最好的NoSQL数据库。我信了~  1. Cassandra是什么 高可用性和可扩展的分布式数据库 Apache Cassandra™是一个开源分布式数据,可提供当今最苛刻的应用程序所需...
    99+
    2015-01-20
    Cassandra 简介
  • kettle 简介
    描述 Kettle是一款开源的 ETL 工具,采用 JAVA 语言编写。 特性 高效稳定,支持多种类型的数据格式,如:MySQL,Oracle,PostGreSQL,CSV 等。 可视化设计。 概念 Transformation(转换):数...
    99+
    2015-03-30
    kettle 简介
  • Redis简介
    Redis官方网网站是:http://www.redis.io/ 。 Redis是一个开源,高级的键值存储和一个适用的解决方案,用于构建高性能,可扩展的Web应用程序。 Redis有三个主要特点,使它优越于...
    99+
    2022-06-04
    简介 Redis
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作