点一下关注吧!!!非常感谢!!持续更新!!!
目前已经更新到了:
- Hadoop(已更完)
- HDFS(已更完)
- MapReduce(已更完)
- Hive(已更完)
- Flume(已更完)
- Sqoop(已更完)
- Zookeeper(已更完)
- HBase(已更完)
- Redis (已更完)
- Kafka(已更完)
- Spark(已更完)
- Flink(已更完)
- ClickHouse(已更完)
- Kudu(已更完)
- Druid(已更完)
- Kylin(已更完)
- Elasticsearch(正在更新…)
章节内容
上节我们完成了如下的内容:
Filter DSL
基本先容
Filter DSL:过滤器查询语言)
Filter DSL 是 Elasticsearch 提供的一种用于构建过滤查询的方式。与 query 语句不同,过滤器不会盘算与文档相干的评分,而是简单地筛选出符合条件的文档。这通常用于只关心是否匹配而不思量匹配度的情况,如日志分析、数据分类等场景。Filter 查询更高效,得当不需要盘算相干性的操作。
实际利用
Elasticsearch中的全部的查询都会触发相干度得分盘算,对于那些不需要相干度得分的场景下,Elasticsearch以过滤器的情势提供了另一种查询功能,过滤器在概念上类似于查询,但是他们有非常快的实行速度,实行速度快主要有以下两个原因:
- 过滤器不会盘算相干度的得分,所以它们在盘算上更快一些
- 过滤器可以被缓存到内存中,这使得他在重复的搜索查询上,其要比相应的查询快的多
为了明白过滤器,可以将一个查询(像是match_all,match,bool等)和一个过滤器结合起来,我们以范围过滤器为例,它答应我们通过一个区间值来过滤文档,这通常被用在数字和日期的过滤上,下面这个例子利用一个被过滤的 查询,其返回值是200到1000之间(闭区间)的书:
- POST /book/_search
- {
- "query": {
- "bool": {
- "must": {
- "match_all": {}
- },
- "filter": {
- "range": {
- "price": {
- "gte": 200,
- "lte": 1000
- }
- }
- }
- }
- }
- }
复制代码 运行的效果如下图所示:
分解上面的例子,被过滤的查询包罗一个match_all查询和一个过滤器。可以在查询部门放入其他查询,在Filter部门放入其他过滤器,在上面的应用场景中,由于全部的在这个范围之内的文档都是平等的(相干度都一样),没有一个文档比另一个文档更相干。所以这个时间就要利用范围过滤器。
通常情况下,要决定利用过滤器照旧查询,你就需要问自己是否需要相干度得分,如果相干度不重要,那就利用过滤器,否则利用查询。查询和过滤器在概念上类似于SELECT WHERE语句。
查询排序
在 Elasticsearch 中,查询效果可以按不同的字段进行排序,默认情况下是按 _score(相干性得分)排序。如果想根据其他字段排序,比如时间戳或代价,可以通过在查询哀求中指定 sort 参数来完成。排序可以是升序(asc)或降序(desc),常用于电商、日志分析等需要按时间或数值排序的场景。
相干性评分
默认情况下,返回的效果都是按照相干性进行排序的,最相干的文档排在最前面,起首看看sort参数以及怎样利用它。
为了按照相干性来排序,需要将相干性表示为一个数值,在Elasticsearch中,相干性得分由一个浮点数进行表示,并在搜索效果中通过_score参数返回,默认排序是_score降序,按照相干性评分升序排序如下:
- # 默认查询时的排序
- POST /book/_search
- {
- "query": {
- "match": {"description":"solr"}
- }
- }
复制代码 实行效果如下图所示:
字段值排序
- # 按照 order 字段进行排序
- POST /book/_search
- {
- "query": {
- "match_all": {}
- },
- "sort": [
- {
- "price": {
- "order": "desc"
- }
- }
- ]
- }
复制代码 实行的效果如下图所示:
多级排序
- # 多种排序字段
- POST /book/_search
- {
- "query":{
- "match_all":{}
- },
- "sort": [
- { "price": {
- "order": "desc"
- }
- },
- {
- "timestamp": {
- "order": "desc"
- }
- }
- ]
- }
复制代码 实行效果如下图所示:
分页查询
Elasticsearch分页的方式好坏常简单的:
- # 分页查询
- POST /book/_search
- {
- "query": {
- "match_all": {}
- },
- "sort": [
- {
- "price": {
- "order": "desc"
- }
- }
- ],
- "size": 2,
- "from": 0
- }
复制代码 实行效果如下图所示:
效果高亮
效果高亮功能用于在查询效果中突出表现匹配的关键词。当用户搜索特定的词时,Elasticsearch 可以在返回的文档中用 标签或其他 HTML 元素将匹配的关键词包裹起来,方便前端展示。这个功能常用于搜索引擎或全文检索的效果展示中,提升用户体验。
- POST /book/_search
- {
- "query": {
- "match": {
- "name": "elasticsearch"
- }
- },
- "highlight": {
- "pre_tags": "<font color='pink'>",
- "post_tags": "</font>",
- "fields": [{"name":{}}]
- }
- }
复制代码 实行的效果如下图所示:
利用match 查询的同时,加上一个highlight属性:
- pre_tags 前置标签
- post_tags 后置标签
- fields 需要高亮的字段,name这里声明title字段需要高亮
批量操作
Elasticsearch 提供了批量操作的 API,用于一次性实行多个操作,如插入、更新、删除等。这种批量操作可以显著进步处理大量数据的服从,淘汰与服务器的交互次数。Bulk API 在需要进行大规模数据处理或日志批量写入时非常有效。
批量查询
可以利用 mget 提供批量查询
单条查询ID的时间,比如很多个ID,一条一条的查询,网络开销好坏常大的。
- # 批量查询
- POST /_mget
- {
- "docs" : [
- {
- "_index" : "book",
- "_id" : 1
- },
- {
- "_index" : "book",
- "_id" : 2
- }
- ]
- }
复制代码 运行的效果如下图所示:
同一索引批量查询
- # book索引下检索
- POST /book/_mget
- {
- "docs" : [
- {
- "_id" : 2
- },
- {
- "_id" : 3
- }
- ]
- }
- # 当然也有一个简化的写法
- POST /book/_search
- {
- "query": {
- "ids" : {
- "values" : ["1", "4"]
- }
- }
- }
复制代码 实行的效果如下图所示:
bulk 批量增删改
Bulk 操作表明将文档的增删改查一系列操作,通过一次哀求全部做完,淘汰网络的传输次数。
- POST /_bulk
- {"action": {"metadata"}}
- {"data"}
复制代码 示例:
- # 批量的操作,增删改查
- POST /_bulk
- { "delete": { "_index": "book", "_id": "1" }}
- { "create": { "_index": "book", "_id": "5" }}
- { "name": "test14","price":100.99 }
- { "update": { "_index": "book", "_id": "2"} }
- { "doc" : {"name" : "test"} }
复制代码 功能:
- delete 删除一个文档,只要1个JSON串就可以 删除的批量操作不需要哀求体
- create 相当于强制创建 PUT /index/type/id/_create
- index 普通的put操作,可以是创建文档,也可以是全量替换文档
- update 实行的是局部更新partial update操作
格式:
隔离:
实际用法:
- bulk哀求一次不要太大,否则一下会挤压到内存中,性能会下降。
- 一次哀求几千个操作,大小在几M正好
- bulk会将要处理的数据载入内存中,所以数据量是有限的,最佳的数据量不是一个确定的值。取决于你的硬件本领、文档复杂性、索引以及搜索的负载
- 一样平常发起1万-5万个文档,大小发起是15MB,默认不能超过100MB,可以在(ES) config/elasticsearch.yml中进行设置 http.max_content_length: 10mb
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |