网站的底部导航栏怎么做,企业网站设计费做哪个科目,哪个网站做h5最好,百度我的订单查询ES 搜索技术历史
今天看的是《Elasticsearch实战与原理解析》 第一章 搜索技术发展史
1、搜索技术发展史
宏观而言#xff0c;搜索引擎的发展经历了五个尖端和两大分类。五个阶段分别是ftp文件检索阶段、分类目录阶段、文本相关性检索阶段、网页链接分析阶段和用户意图识别…ES 搜索技术历史
今天看的是《Elasticsearch实战与原理解析》 第一章 搜索技术发展史
1、搜索技术发展史
宏观而言搜索引擎的发展经历了五个尖端和两大分类。五个阶段分别是ftp文件检索阶段、分类目录阶段、文本相关性检索阶段、网页链接分析阶段和用户意图识别阶段。
ftp文件检索阶段索索引擎质检所多个ftp服务器山存储的文件用户搜索是需要输入精准的文件名来搜索。搜索引擎会告诉用户从哪一个ftp服务器下载。
分类目录阶段该阶段搜索引擎是一个导航网站网站中国都是湾沚的分类陈列用户在互联网上常用的湾沚在这里都有到现在这种类型的网站依旧存在。
文本相关性检索阶段该阶段引入了全文搜索技术主要是为了解决网络信息骤增带来的检索到的信息不准。用户将菽粟的查询信息交给搜索引擎后台服务器搜索引擎服务器通过查询已经素银好的网页返回一些相关性好的网页信息。
网页链接分析阶段该阶段的搜索引擎使用的网站链接形式与当前基本相同在该阶段外部链接表示推荐。这一阶段的代表是谷歌。目前网页链接分析算法和改进优化的版本在主流搜索引擎中国大行其道。
用户意图识别阶段该阶段的搜索引起以用户为中心作为设计的初心搜索引擎力求理解每一位用户的真正诉求力求做到千人千面追求葛新华识别和反馈。这一阶段的代表是百度。
两大分类是站内搜索和站外搜索。
简单来说站内搜索就是在一个网站中进行检索如在京东商城中的搜索某个物品 推荐出的东西都是在京东商城中出现的站外搜索一般来说都是在整个生态中的搜索如 使用百度搜索他会推荐出相似度较高的某些链接给你。
2、Elasticsearch简介
Elasticsearch是一个分布式、可扩展、近实时的高性能搜索和数据分析引擎。它提供了搜索、分析、存储数据的三个功能 。
其主要特点分布式、量配置、开箱即用、自动发现、索引分片、索引副本机制、支持restful接口、多数据源、自动索引负载。
它是在lucene的基础上做的封装。
3、lucene简介
lucene是一个免费 、开源、高性能、纯java编写的全文搜索引擎。
其主要特点
索引文件格式独立于应用平台定义了一套以8字节为基础的索引文件格式兼容各个平台、
索引速度快在传统的全文索引的倒排序索引的基础上实现了分块索引能够对新的 文件建立小文件索引提升索引速度、
简单易学优秀的面向对象的系统架构减低了lucene的学习难度、
跨语言设计了独立于预约和文件格式的文本分析接口索引器通过接受token留完成索引文件的创立用户扩展的语言和文件格式只需要实现文件分析的接口即可、
强大的搜索引擎lucene默认实现了一套签到的查询引擎用户无需自己编写代码即可通过文件获得强大的查询能力。lucene实现了布尔操作、模糊查询、分组查询等。
lucene主要模块
Analysis模块主要负责词法分析和语言处理。也就是分词通过该模块最终新城存储或者查询的最小单元term
index模块索引的创建工作
store模块负责索引的读写 主要是对文件的一些操作主要目的是抽象出和平台文件系统无关的存储
QueryParser模块负责语法分析 把查询语句生成lucene底层识别的条件
Search模块负责对索引的搜索
Similarily模块负责相关性打分和排序的实现。
第二章 搜索技术基础知识一
数据搜索方式。
搜索引擎主要对数据进行搜索而在牙发过程中不拿发现数据有两种类型。即结构化和非急死结构化数据。 对软件研发人员来说在做数据车计划时对数据的结构化感知会非常强烈。如结构化数据一般我们会放在光起型数据库。这是因为结构化数据有固定的数据格式和有限的。长度因此可以通过二维化的表格来承载它。
而非结构化数据一般会存在。mongodb中这是因为非结构化的数据长度不固定且无固定数据格式。显然在关系型数据库中存储这类数据较为困难。
于数据形态相对应的。数据的搜索分为两种即结构化数据搜索和非结构化数据搜索。 因为结构化数据可以基于数据库来存储而关系数据库往往支持索引。因此结构化数据可以通过关系数据库来完成搜索和查找。通常有数据扫描关键词精准匹配关键词部分匹配。对于比较复杂的关键词部分匹配通常借助like。来实现。 对于非结构化数据数据的搜索主要有顺序扫描和全文搜索两种方式显然对于非结构化数据而言数据扫描的效率很低的方法因此全文检索技术应运而生而全文检索就是宝叔所说的搜索引擎要做的事。 在实现全文检索的过程中一般都需要提取非结构化数据中的有效信息。重新组织数据的常在结构形式而搜索数据是。要基于新结构化的数据展开从而达到提高检索速度的目的。显而易见全文检索是一种空间换时间的做法前街进行数据索引的创建。需要花费一定的时间和空间但能显著提高后期的速度效率。
搜索引擎的工作原理。
搜索引擎的工作原理分为两个阶段计网页数据抓取和索引阶段。搜索阶段。其中网页数据抓取和索引阶段包含网络爬虫。数据预处理数据索引三个主要动作。搜索街道包含搜索关键词。输入内容预处理。搜索关键词查询三个主要动作。
其中网络爬虫用于抓取互联网上的网页。抓取到一个新网页后还要继续通过该网页中的链接来。抓取其他网页因此网络爬虫是一个不间歇的工作。一般需要自动化手段来食食。网络爬虫的主要工作就是尽可能快尽可能全的发现和抓举。互联网上各种网业。
网页网页被网络巴掌抓起后会被存入网页库已被现阶段进行数据的预处理。需要指出的是网页库里。存储的网页信息与我们在浏览器看到的网页。内容相同。此外由于互联网上的网页有一定的重复性因此把新网页真正插入网页库之前需要进行。查重检查
网页数据预处理的程序不断的从网页库中取出网页进行必要的预处理。常见的预处理动作有除噪声内容关键词处理网页间链接关系计算的其中。去除噪声内容包括版权声明文字导航条广告等。网页经过预处理后会被浓缩长以关键词为核心的内容。
此外互联网上的内容除了常规的网页外还有各种类型的文档。多媒体文件的这些内容均需进行相应的数据预处理动作。
数据预处理后进行数据索引。过程。索引过程先后经历正向索引和倒排索引阶段最终建立索引库随着新的网页等内容不断的被加入网页库。所以库的更新和维护往往也是增量进行的。 以上就是网页数据抓取和索引阶段的核心工作。下面介绍。检索阶段的核心工作
用户输入的关键词同样会经过预处理如删除不必要的标点符号停用词空格。字符串。拼写错误识别的。随后进行相关的风词风词后搜索引擎系统向索引库发出索引请求索引库会将。包含索引关键词的新功伟业从索引库中找出来所以引擎根据索引库返回的内容进行排序处理最终返回给用户。
http操作es http操作es ES 搜索技术历史1、搜索技术发展史2、Elasticsearch简介3、lucene简介 第二章 搜索技术基础知识一数据搜索方式。搜索引擎的工作原理。 http操作es测试es服务操作索引创建索引查看所有索引查看索引删除索引 操作文档创建文档未使用自定义的id不支持put自定义id如果是自定义id可以使用post和put请求version发生变化。多次提交就是update 查看文档修改文档修改单个字段局部更新删除文档删除一个不存在的文档按照条件删除 mappings 设置查询1)查询全部2)匹配查询3)字段匹配查询4)关键字精准查询 ,类似于 5)多关键字精准查询6)查询指定字段7)过滤字段8)组合查询9) 查询范围10) 模糊查询11) 单个字段排序12)多个字段排序13)高亮显示14) 分页查询15) 聚合查询最大最小平均求和个数去重后求和一下子返回 max min avg count sum 16) 桶聚合查询 分组 测试es服务 操作索引
创建索引
http://192.168.110.14:9200/shopping { “acknowledged”: true, 响应结果 “shards_acknowledged”: true, 分片结果 “index”: “shopping” 索引名称 } 再次添加相同的索引报错
查看所有索引
http://192.168.110.14:9200/_cat/indices?v
health当前服务器健康状态green(集群完整) yellow(单点正常、集群不完整) red(单点不正常) status索引打开、关闭状态 index索引名 uuid:索引统一编号 pri :主分片数量 rep 副本数量 docs.count 可用文档数量 docs.deleted 文档删除状态逻辑删除 store.size 主分片和副分片整体占空间大小 pri.store.size 主分片占空间大小
查看索引
http://192.168.110.14:9200/shopping
{ “shopping”: { 索引名称 “aliases”: {}, 别名 “mappings”: {}, 映射 “settings”: { 设置 “index”: { 索引 “creation_date”: “1625020090820”, 创建时间 “number_of_shards”: “5”, 主分片数量 “number_of_replicas”: “1”, 副分片数量 “uuid”: “Jnmea8sgRfikz77XlqkHaw”, 索引uuid 唯一性标识 “version”: { 索引版本 “created”: “5060999” }, “provided_name”: “shopping” 索引名称 } } } }
删除索引
http://192.168.110.14:9200/shopping 再次删除索引不存在
操作文档
创建文档 { “_index”: “shopping”, “_type”: “phone”, “_id”: “AXpa2or3t0FIJb8Na4mK”, “_version”: 1, “result”: “created”, “_shards”: { 分片 “total”: 2, 总数 “successful”: 1, “failed”: 0 }, “created”: true }
未使用自定义的id不支持put 自定义id 如果是自定义id可以使用post和put请求version发生变化。多次提交就是update 查看文档
http://192.168.110.14:9200/shopping/phone/1 { “_index”: “shopping”, “_type”: “phone”, “_id”: “1”, “_version”: 6, “found”: true, 查询结果true表示找到了false表示未找到 “_source”: { 文档源信息 “title”: “小米手机222”, “category”: “小米”, “images”: “http://www.gulixueyuan.com/xm.jpg”, “price”: 1999.00 } }
修改文档
post或者put
修改单个字段局部更新
http://192.168.110.14:9200/shopping/phone/1/_update
删除文档
http://192.168.110.14:9200/shopping/phone/1
删除一个不存在的文档 按照条件删除
post http://192.168.110.14:9200/shopping/_delete_by_query { “took”: 118, 耗时 “timed_out”: false, 是否超时 “total”: 4, 总数 “deleted”: 4, 删除数量 “batches”: 1, “version_conflicts”: 0, “noops”: 0, “retries”: { “bulk”: 0, “search”: 0 }, “throttled_millis”: 0, “requests_per_second”: -1.0, “throttled_until_millis”: 0, “failures”: [] }
mappings 设置
使用put请求创建映射 http://192.168.110.14:9200/student/_mapping { “properties”:{ “name”:{ – 字段名称 “type”:“text”, – 字段类型 “index”:true }, “sex”:{ “type”:“text”, “index”:false }, “age”:{ “type”:“long”, “index”:false } } } 1字段类型 有哪些 String 字符串类型 text: 可分词 keyword: 关键字 不可分词 Numerical 数值类型 基本类型:byte short int long double float 浮点数的高进度类型scaled_float Date 日期类型 Array 数组类型 Object 对象类型
2定义中的index index 表示是否索引。默认是true,该字段会被索引到能够进行搜索;false 表示不能被搜索到
3store 是否将数据进行独立存储,默认是false 原始的文本会存储到_source,默认情况下 ,其他提取出来的字段都不是独立存储的,是从_source里面 提取出来的.当然你也可以独立的存储某个字段只要设置store:true即可获取独立存储的字段 要比从_source中解析出来快得多,但是也会占用更多的空间所以要更具业务需要来设置
4analyzer: 分词器这里的ik_max_word 及使用ik分词器
查询
get http://192.168.110.14:9200/shopping/_search
1)查询全部
{query:{mach_all:{}}
}2)匹配查询
{query:{mach:{name:张三}}
}3)字段匹配查询
在多个字段上进行查询
{query:{multi_mach:{name:张三,fields:[name,nickname]}}
}4)关键字精准查询 ,类似于 “”
{query:{trrm:{name:张三}}
}5)多关键字精准查询
{query:{trrms:{name:[张三,lisi]}}
}6)查询指定字段
{_source:[name,age]query:{trrm:{name:张三}}
}7)过滤字段
includes 包含
excludes 不包含
{_source:{includes:[name,age],excludes:[sex]}query:{trrm:{name:张三}}
}8)组合查询
bool must must_not should
{query:{bool:{must:{sex:男},must_not:{age:40},should:{name:张}}}
}9) 查询范围
gt 大于
gte 大于等于
lt 小于
lte 小于等于
{query:{range:{age:{gt:10,lt:50}}}
}10) 模糊查询
fuzzy 类似于 like fuzziness 指定距离
{query:{fuzzy:{name:si,fuzziness:2},}
}11) 单个字段排序
{query:{mach:{name:张三}},sort:[age:{order:desc}]
}12)多个字段排序
{query:{mach_all:{}},sort:[age:{order:desc},_source:{order:desc}]
}13)高亮显示
{query:{mach_all:{}},highlight:{pre_tags: font colorred,post_tags:/fontfields:{name:{}}}
}14) 分页查询
{query:{mach_all:{}},sort:[age:{order:desc}],from:0size:5
}15) 聚合查询
最大
{aggs:{max_age:{max:{fields:age}}},size:0
}最小
{aggs:{min_age:{min:{fields:age}}},size:0
}平均
{aggs:{avg_age:{avg:{fields:age}}},size:0
}求和
{aggs:{sum_age:{sum:{fields:age}}},size:0
}个数
{aggs:{sum_age:{sum:{fields:age}}},size:0
}去重后求和
{aggs:{distinct_age:{cardinality:{fields:age}}},size:0
}一下子返回 max min avg count sum
{aggs:{seats_age:{seats:{fields:age}}},size:0
}16) 桶聚合查询 分组
{aggs:{age_groupby:{terms:{fields:age}}},size:0
}