当前位置: 首页 > news >正文

Elasticsearch 8.1官网文档梳理 - 十三、Search your data(数据搜索)

Search your data

这里有两个比较有用的参数需要注意一下

  1. Search timeout:设置每个分片的搜索超时时间。从集群级别可以通过 search.default_search_timeout 来设置超时时间。如果在 search.default_search_timeout 设置的时间段内未完成搜索请求,就会取消该任务。search.default_search_timeout 的默认值为 -1 ,表示无超时时间限制。
GET /my-index-000001/_search
{"timeout": "2s","query": {"match": {"user.id": "kimchy"}}
}
  1. track_total_hits:设置搜索过程中匹配文档的数量。如果需要匹配所有文档,track_total_hits 设置为 true,如果需要匹配的文档为 1000 条,则 track_total_hits 设置为 1000。数据量大时 track_total_hits 设置为 true 会拖慢查询速度。
GET my-index-000001/_search
{"track_total_hits": true,"query": {"match" : {"user.id" : "elkbee"}}
}

注意:
这强调一下 Response 中的 tooktook 代表处理该请求所耗费的毫秒数。从节点收到查询后开始,到返回客户端之前,包括在线程池中等待、在集群中执行分布式搜索和收集、排序所有结果所花费的时间。

一、Collapse search results

没看懂有啥用呢。。。考完试再研究

二、Filter search results

  1. post_filterfilter 过滤会将符合条件的文档留下,之后进行 聚合,而 post_filter 是在聚合后过滤结果,不影响聚合结果。
# 创建索引,添加数据
PUT /shirts
{"mappings": {"properties": {"brand": { "type": "keyword"},"color": { "type": "keyword"},"model": { "type": "keyword"}}}
}POST /shirts/_bulk
{"index":{}}
{"brand": "gucci", "color": "red", "model": "slim"}
{"index":{}}
{"brand": "gucci", "color": "back", "model": "slim"}
{"index":{}}
{"brand": "gucci", "color": "back", "model": "large"}

直接使用 filter

GET /shirts/_search
{"query": {"bool": {"filter": [{ "term": { "color": "red"   }},{ "term": { "brand": "gucci" }}]}},"aggs": {"models": {"terms": { "field": "model" } }}
}

在这里插入图片描述
使用 post_filter

GET /shirts/_search
{"post_filter": {"bool": {"filter": [{ "term": { "color": "red"   }},{ "term": { "brand": "gucci" }}]}}, "aggs": {"models": {"terms": { "field": "model" } }}
}

在这里插入图片描述

  1. rescore:对每个分片的查询结果的前 window_size 个文档重新评分。
POST /_search
{"query" : {"match" : {"message" : {"operator" : "or","query" : "the quick brown"}}},"rescore" : {"window_size" : 50,"query" : {"rescore_query" : {"match_phrase" : {"message" : {"query" : "the quick brown","slop" : 2}}},"query_weight" : 0.7,"rescore_query_weight" : 1.2}}
}

三、Highlighting

从搜索结果中的一个或多个字段中获取高亮片段,并高亮显示,便于显示查询匹配的位置。
简单一点

GET my_index/_search
{"query": {"match": { "my_text": "GET" }},"highlight": {"fields": {"my_text": {"pre_tags" : ["<em>"], "post_tags" : ["</em>"]}}}
}

高亮显示可让您从搜索结果中的一个或多个字段中获取高亮片段,以便向用户显示查询匹配的位置。

四、Long-running searches

五、Near real-time search

六、Paginate search results

主要描述分页查询和深度查询,其中分页查询通过 fromsize 来控制,这里将不再赘述。深度查询这里主要通过 Point in time(时间点) 和 Scroll search(滚动查询)这两种方法来实现。文档中更推荐使用 Point in time 配合 search_after 来实现。

  1. Point in time 配合 search_after 实现深度分页查询
# 创建时间点
POST /my-index-000001/_pit?keep_alive=1m# Response
{"id" : "8_LoAwEXa2liYW5hX3NhbXBsZV9kYXRhX2xvZ3MWTThSb1hDMUpSZS1EWnBuSjNtWG1sZwAWUmotTmxzRENUbXVCdGw0YVQyUGJPZwAAAAAAAAAEmBZBYjhlejFTQ1MxaWZLS1VST05NZnhBAAEWTThSb1hDMUpSZS1EWnBuSjNtWG1sZwAA"
}# 利用 
GET /_search
{"size": 10,"query": {"term": {"tags.keyword": {"value": "success"}}},"pit": {"id":  "8_LoAwEXa2liYW5hX3NhbXBsZV9kYXRhX2xvZ3MWTThSb1hDMUpSZS1EWnBuSjNtWG1sZwAWeGZPTXRkbS1UX3lkd1ZsVzloVnlnZwAAAAAAAAAAfRZGSWlyWklWMlRsT05URnFocm9fakVBAAEWTThSb1hDMUpSZS1EWnBuSjNtWG1sZwAA", "keep_alive": "1m"},"sort": [ {"timestamp": {"order": "asc", "format": "strict_date_optional_time_nanos", "numeric_type" : "date_nanos" }}]
}
  1. Scroll search(滚动查询)实现深度分页查询
# 创建一个滚动查询
POST /kibana_sample_data_logs/_search?scroll=1m
{"size": 100,"slice": {"id": 0,"max": 2},"query": {"match": {"agent": "Mozilla"}}
}# Response
{"_scroll_id" : "FGluY2x1ZGVfY29udGV4dF91dWlkDXF1ZXJ5QW5kRmV0Y2gBFkFiOGV6MVNDUzFpZktLVVJPTk1meEEAAAAAAAAE6hZSai1ObHNEQ1RtdUJ0bDRhVDJQYk9n","took" : 5,"timed_out" : false...
}# 通过滚动查询实现深度分页查询
POST /_search/scroll                                                               
{"scroll" : "1m",                                                                 "scroll_id" : "FGluY2x1ZGVfY29udGV4dF91dWlkDXF1ZXJ5QW5kRmV0Y2gBFkFiOGV6MVNDUzFpZktLVVJPTk1meEEAAAAAAAAE6hZSai1ObHNEQ1RtdUJ0bDRhVDJQYk9n" 
}

七、Retrieve inner hits

八、Retrieve selected fields

九、Search across clusters

十、Search multiple data streams and indices

十一、Search shard routing

十二、Search templates

十三、Sort search results

对返回的结果排序。这里需要注意的是,_score_docsort 中的被排序的字段的优先级一样,按照在 sort 中的排列顺序来排序。_score 表示文档的相似度得分,_doc 表示 _doc 的写入顺序。

GET /my_index/_search
{"sort" : [{ "@timestamp" : {"order" : "asc", "format": "strict_date_optional_time_nanos"}},{ "my_other_field" : "desc" },{ "my_field": "desc" },"_score","_doc"]
}

也支持对 数组类型的字段进行排序,通过 mode 来选择数组中的值。

十四、kNN search

http://www.lryc.cn/news/359652.html

相关文章:

  • 笔墨挥毫如游龙 最是经典铁线篆——记著名书法家王子彬
  • 智慧校园有哪些特征
  • day25回溯算法part02| 216.组合总和III 17.电话号码的字母组合
  • AWS联网和内容分发服务
  • vscode设置编辑器文件自动保存
  • SJ705C安全帽高温预处理箱
  • AI盒子在智慧加油站的应用
  • IC开发——VCS基本用法
  • MongoDB~存储引擎了解
  • JavaScript实现粒子数字倒计时效果附完整注释
  • Dubbo SPI(Service Provider Interface)机制深度解析
  • 常用中间件各版本下载
  • VsCode SSH远程设置不用重复输入密码
  • 【Linux】:进程切换
  • MongoDB CRUD操作:删除文档
  • SpringBoot集成腾讯COS流程
  • 中高级前端开发岗
  • idea常用配置
  • Spring AOP 切面按照一定规则切片并行查询Mapper并返回
  • 【vue3|第4期】Vue3的选项式与组合式
  • 算法训练营第四十五天 | LeetCode 1049 最后一块石头的重量II、LeetCode 494 目标和、LeetCode 474 一和零
  • 【数据结构与算法(C 语言)】栈的基本操作函数(动图演示) 及 栈的实际应用之一:进制转换
  • [原创]C++ 11的thread_local线程局部变量与Lambda表达式配合使用, 却引发致命的, 难以发现的冲突.
  • C语言-单精度和双精度浮点型
  • STM32学习问题总结(2)—CubeMX生成项目后串口没效果和Microlib
  • 【数据结构与算法 | 二叉树篇】二叉树的前中后序遍历(递归版本)
  • Python exp用法:深入探索指数函数的奥秘
  • [有监督学习] 8.详细图解神经网络
  • 我给线程池管理框架hippo4j找bug
  • win10键盘按乱了,如何恢复?