企业建站模板下载,宣传图制作网站,百度百科搜索入口,网站建设一般多少钱网址了解一下Elasticsearch的基本概念 一、前文介绍 Elasticsearch#xff08;简称ES#xff09;是一个基于Apache Lucene(TM)的开源搜索引擎#xff0c;无论在开源还是专有领域#xff0c;Lucene 可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。注意#x… 了解一下Elasticsearch的基本概念 一、前文介绍 Elasticsearch简称ES是一个基于Apache Lucene(TM)的开源搜索引擎无论在开源还是专有领域Lucene 可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。注意Lucene 只是一个库。想要发挥其强大的作用你需使用 Java 并要将其集成到你的应用中。 Lucene 非常复杂你需要深入的了解检索相关知识来理解它是如何工作的就跟学习 springmvc 之前先从 servlet 开始繁琐复杂的工作Solor、Elasticsearch 应由而生 其使用 Java 编写并使用 Lucene 来建立索引并实现搜索功能但是它的目的是通过简单连贯的 RESTful API 让全文搜索变得简单并隐藏 Lucene 的复杂性。 重要特性 分布式的实时文件存储每个字段都被索引并可被搜索实时分析的分布式搜索引擎可以扩展到上百台服务器处理PB级结构化或非结构化数据基本概念 索引indices-------------------Databases 数据库类型type----------------------Table 数据表文档Document---------------Row 行字段Field---------------------Columns 列 详细说明 概念说明索引库indices)indices是index的复数代表许多的索引类型type类型是模拟mysql中的table概念一个索引库下可以有不同类型的索引比如商品索引订单索引其数据格式不同。不过这会导致索引库混乱因此未来版本中会移除这个概念文档document存入索引库原始的数据。比如每一条商品信息就是一个文档字段field文档中的属性映射配置mappings字段的数据类型、属性、是否索引、是否存储等特性要注意的是Elasticsearch 本身就是分布式的因此即便你只有一个节点Elasticsearch 默认也会对你的数据进行分片和副本操作当你向集群添加新数据时数据也会在新加入的节点中进行平衡。 二、Elasticsearch安装[windows] 如下主要针对 windows 环境下的 Elasticsearch 学习。 下载地址https://www.elastic.co/cn/products/ 解压后进入 bin/ 目录双击执行 elasticsearch .bat Elasticsearch 启动后可以看到绑定了两个端口: 9300集群节点间通讯接口【tcp连接方式性能优于http】9200客户端访问接口【接收http请求】9200我们可以通过浏览器直接访问9300 则不可以直接访问。 三、Kibana 安装 Kibana 是一个基于 Node.js 的 Elasticsearch 索引库数据统计工具可以利用 Elasticsearch 的聚合功能生成各种图表如柱形图线状图饼图等。 而且还提供了操作 Elasticsearch 索引数据的控制台并且提供了一定的API提示非常有利于我们学习 Elasticsearch 的语法。 1、配置 我们可以把 Kibana 当成durid 连接池对于 mysql 的可视化来理解。 下载地址https://www.elastic.co/cn/downloads/kibana 解压后进入安装目录下的 config 目录修改 kibana.yml 文件 修改elasticsearch服务器的地址去掉原来的注释 elasticsearch.url: http://localhost:9200 Kibana 的监听端口为 5601http://127.0.0.1:5601 浏览器打开如下图所示 Dev Tools 相当于一个命令行窗口工具带提示Elasticsearch 执行的数据格式为 json举例 POST _analyze{ analyzer: ik_max_word, text: 我喜欢编程} 四、ik 分词器安装 由于 Elasticsearch 在拆分单词时,是按空格来分即 hello world 分为 hello 和 world这是没问题的但是在拆分中文时也是按照一个汉字一个汉字来拆分。即“我喜欢编程”分为 我、喜、欢、编、程 5个字符所以就需要用到 IK 分词器这个插件来进行拆分。 Lucene 的 IK 分词器早在 2012 年已经没有维护了现在我们要使用的是在其基础上维护升级的版本并且开发为 ElasticSearch 的集成插件了与 Elasticsearch 一起维护升级版本也保持一致。 IK下载地址https://github.com/medcl/elasticsearch-analysis-ik/releases 注意 ES 与 IK 版本对应地址https://github.com/medcl/elasticsearch-analysis-ik/tree/2.x 将 zip 包解压到 Elasticsearch 目录的 plugins 目录中 然后重启 Elasticsearch 五、基本概念-详细了解 上文也了解到 ES 操作的数据为 json实际项目中比如 springboot 中无须操作 json都是面向对象编程但是学习其实际原理固然重要。 5.1、创建索引 创建索引的请求格式 请求方式PUT请求路径/索引库名请求参数json格式{ settings: { number_of_shards: 3, number_of_replicas: 2 }} settings索引库的设置number_of_shards 分片数量number_of_replicas副本数量示例 5.2、查看索引设置 语法 Get请求可以帮我们查看索引信息格式 GET /索引库名 5.3、删除索引 删除索引使用DELETE请求 语法 DELETE /索引库名 六、映射配置 6.1、创建映射字段 语法 请求方式依然是PUT PUT /索引库名/_mapping/类型名称{ properties: { 字段名: { type: 类型, index: true store: true analyzer: 分词器 } }} 类型名称就是前面将的type的概念类似于数据库中的不同表字段名任意填写 可以指定许多属性例如type类型可以是text、long、short、date、integer、object等index是否索引默认为truestore是否存储默认为falseanalyzer分词器这里的ik_max_word即使用ik分词器示例 发起请求 PUT niceyoo2/_mapping/goods{ properties: { title: { type: text, analyzer: ik_max_word }, images: { type: keyword, index: false }, price: { type: float } }} 响应结果 { acknowledged: true} 6.2、查看映射关系 语法 GET /索引库名/_mapping 示例 GET /niceyoo2/_mapping 响应 { niceyoo2: { mappings: { goods: { properties: { images: { type: keyword, index: false }, price: { type: float }, title: { type: text, analyzer: ik_max_word } } } } }} 七、字段属性详解 7.1、type Elasticsearch 中支持的数据类型非常丰富 我们说几个关键的 String类型又分两种 text可分词不可参与聚合keyword不可分词数据会作为完整字段进行匹配可以参与聚合Numerical数值类型分两类: 基本数据类型long、interger、short、byte、double、float、half_float浮点数的高精度类型scaled_float 需要指定一个精度因子比如10或100。elasticsearch会把真实值乘以这个因子后存储取出时再还原。Date日期类型 elasticsearch 可以对日期格式化为字符串存储但是建议我们存储为毫秒值存储为 long节省空间。 7.2、index index影响字段的索引情况。 true字段会被索引则可以用来进行搜索。默认值就是truefalse字段不会被索引不能用来搜索index的默认值就是true也就是说你不进行任何配置所有字段都会被索引。 但是有些字段是我们不希望被索引的比如商品的图片信息就需要手动设置index为false。 7.3、store 是否将数据进行额外存储。 在学习lucene和solr时我们知道如果一个字段的store设置为false那么在文档列表中就不会有这个字段的值用户的搜索结果中不会显示出来。 但是在Elasticsearch中即便store设置为false也可以搜索到结果。 原因是Elasticsearch在创建文档索引时会将文档中的原始数据备份保存到一个叫做_source的属性中。而且我们可以通过过滤_source来选择哪些要显示哪些不显示。 而如果设置store为true就会在_source以外额外存储一份数据多余因此一般我们都会将store设置为false事实上store的默认值就是false。 7.4、boost 激励因子这个与lucene中一样 其它的不再一一讲解用的不多大家参考官方文档 最后 下篇带大家详细了解 elasticsearch 中的 增随机id、自定义id删带条件删除改带条件修改查带条件查询 如果文章有错的地方欢迎指正大家互相留言交流。习惯在微信看技术文章想要获取更多的Java资源的同学可以关注微信公众号niceyoo posted 2019-05-14 21:42 niceyoo 阅读(...) 评论(...) 编辑 收藏