ES-搜索和查询

这篇具有很好参考价值的文章主要介绍了ES-搜索和查询。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Query DSL(Domain Specific Language)
1 查询上下文
​ 使用query关键字进行检索,倾向于相关度搜索,故需要计算评分。搜索是Elasticsearch最关键和重要的部分。
2 相关度评分:_score
​ 概念:相关度评分用于对搜索结果排序,评分越高则认为其结果和搜索的预期值相关度越高,即越符合搜索预期值。在7.x之前相关度评分默认使用TF/IDF算法计算而来,7.x之后默认为BM25。

​ 排序:相关度评分为搜索结果的排序依据,默认情况下评分越高,则结果越靠前。

3 元数据:_source
禁用_source:

好处:节省存储开销

坏处:

不支持update、updatebyquery和reindex API。
不支持高亮。
不支持reindex、更改mapping分析器和版本升级。
通过查看索引时使用的原始文档来调试查询或聚合的功能。
将来有可能自动修复索引损坏。
总结:如果只是为了节省磁盘,可以压缩索引比禁用_source更好。

数据源过滤器:
Excluding:结果中不要返回哪些field,不返回的field不代表不能通过该字段进行检索,因为元数据不存在不代表索引不存在

在mapping中定义过滤:支持通配符,但是这种方式不推荐,因为mapping不可变

console PUT product { “mappings”: { “_source”: { “includes”: [ “name”, “price” ], “excludes”: [ “desc”, “tags” ] } } }

常用过滤规则

“_source”: “false”,
“_source”: “obj.",
“_source”: [ "obj1.
”, “obj2." ],
“_source”: { “includes”: [ "obj1.
”, “obj2." ], “excludes”: [ ".description” ] }

4 Query String

查询所有:

GET /product/_search

带参数:

GET /product/_search?q=name:xiaomi

分页:
GET /product/_search?from=0&size=2&sort=price:asc

精准匹配 exact value
GET /product/_search?q=date:2021-06-01

_all搜索 相当于在所有有索引的字段中检索
GET /product/_search?q=2021-06-01

DELETE product # 验证_all搜索 PUT product { “mappings”: { “properties”: { “desc”: { “type”: “text”, “index”: false } } } } # 先初始化数据 POST /product/_update/5 { “doc”: { “desc”: “erji zhong de kendeji 2021-06-01” } }

5 全文检索-Fulltext query
GET index/_search { “query”: { *** } }

match:匹配包含某个term的子句 —模糊查询
match_all:匹配所有结果的子句
multi_match:多字段条件
match_phrase:短语查询 —精确匹配

6 精准查询-Term query
term:匹配和搜索词项完全相等的结果
term和match_phrase区别:
matchphrase 会将检索关键词分词, matchphrase的分词结果必须在被检索字段的分词中都包含,而且顺序必须相同,而且默认必须都是连续的
term是将传入的文本原封不动地(不分词)拿去查询。

term和keyword区别
term是对于搜索词不分词,

keyword是字段类型,是对于source data中的字段值不分词

terms:匹配和搜索词项列表中任意项匹配的结果
range:范围查找

match用于进行模糊匹配,会对输入进行分词处理后再去查询,部分命中的结果也会按照评分由高到低显示出来。

7 过滤器-Filter
console GET _search { “query”: { “constant_score”: { “filter”: { “term”: { “status”: “active” } } } } }

filter:query和filter的主要区别在: filter是结果导向的而query是过程导向。query倾向于“当前文档和查询的语句的相关度”而filter倾向于“当前文档和查询的条件是不是相符”。即在查询过程中,query是要对查询的每个结果计算相关性得分的,而filter不会。另外filter有相应的缓存机制,可以提高查询效率。

8 组合查询-Bool query
bool:可以组合多个查询条件,bool查询也是采用more_matchesisbetter的机制,因此满足must和should子句的文档将会合并起来计算分值

must:必须满足子句(查询)必须出现在匹配的文档中,并将有助于得分。
filter:过滤器 不计算相关度分数,cache☆子句(查询)必须出现在匹配的文档中。但是不像 must查询的分数将被忽略。Filter子句在filter上下文中执行,这意味着计分被忽略,并且子句被考虑用于缓存。
should:可能满足 or子句(查询)应出现在匹配的文档中。
must_not:必须不满足 不计算相关度分数 not子句(查询)不得出现在匹配的文档中。子句在过滤器上下文中执行,这意味着计分被忽略,并且子句被视为用于缓存。由于忽略计分,0因此将返回所有文档的分数。
minimumshouldmatch:参数指定should返回的文档必须匹配的子句的数量或百分比。如果bool查询包含至少一个should子句,而没有must或 filter子句,则默认值为1。否则,默认值为0文章来源地址https://www.toymoban.com/news/detail-444012.html

到了这里,关于ES-搜索和查询的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【ES专题】ElasticSearch 高级查询语法Query DSL实战

    【ES专题】ElasticSearch 高级查询语法Query DSL实战

    个人在学习的过程中,感觉比较吃力的地方有如下: 语法结构比较陌生 没有中文文档, 只能看英文 其他博客也比较少介绍语法结构。比如说,为什么查询中会出现 query 有ES入门基础,且想进一步学习ES基本操作的朋友 系列上一篇文章:《【ES专题】ElasticSearch快速入

    2024年02月06日
    浏览(14)
  • 使用ES Term query查询时一定要注意的地方

    使用ES Term query查询时一定要注意的地方

    使用 Term query 可以根据精确值查找相关文档数据,不过 Term query 查询与 Match query 查询还是有区别的,有时候你会发现用 Match query 可以查到,换成 Term query 却不行,本文整理一些使用 Term query 容易出错的点供参考。 如果你查看 Term query 的官方文档,你就会发现,官网首先对

    2024年02月11日
    浏览(9)
  • 【ElasticSearch-基础篇】ES高级查询Query DSL术语级别查询并结合springboot使用

    Elasticsearch 提供了基于 JSON 的完整 Query DSL(Domain Specific Language)来定义查询。 因Query DSL是利用Rest API传递JSON格式的请求体(RequestBody)数据与ES进行交互,所以我们在使用springboot的时候也可以很方便的进行集成,本文主要讲述的就是使用springboot实现各类DSL的语法查询。 Elastics

    2024年02月01日
    浏览(11)
  • LLMs参考资料第一周以及BloombergGPT特定领域的训练 Domain-specific training: BloombergGPT

    LLMs参考资料第一周以及BloombergGPT特定领域的训练 Domain-specific training: BloombergGPT

    以下是本周视频中讨论的研究论文的链接。您不需要理解这些论文中讨论的所有技术细节 - 您已经看到了您需要回答讲座视频中的测验的最重要的要点。 然而,如果您想更仔细地查看原始研究,您可以通过以下链接阅读这些论文和文章。 注意力就是你需要的 《Attention is Al

    2024年02月11日
    浏览(12)
  • ElasticSearch系列 - SpringBoot整合ES:查询条件 query 和过滤条件 filter 的区别

    01. Elasticsearch 查询条件和过滤条件的区别? Elasticsearch中的查询条件和过滤条件都是用于搜索和过滤文档的条件,但它们之间有一些区别。 查询条件是用于计算文档相关度得分的条件,它会将所有符合条件的文档按照相关度得分从高到低排序,并返回前N个文档。查询条件可以

    2024年02月14日
    浏览(14)
  • es通过rest接口_search、_delete_by_query查询与删除数据

    es通过rest接口_search、_delete_by_query查询与删除数据

    1、rest接口查询数据 rest查询: http://localhost:9200/index_name/_search 查询表达式: postman请求截图: 2、使用Rest接口删除数据 rest删除数据: http://localhost:9200/index_name/_delete_by_query 查询表达式: postman请求截图:

    2024年02月16日
    浏览(13)
  • ES-搜索和查询

    Query DSL(Domain Specific Language) 1 查询上下文 ​ 使用query进行检索,倾向于相关度搜索,故需要计算评分。搜索是Elasticsearch最关键和重要的部分。 2 相关度评分:_score ​ 概念:相关度评分用于对搜索结果排序,评分越高则认为其结果和搜索的预期值相关度越高,即越符合

    2024年02月04日
    浏览(10)
  • ES es Elasticsearch 十三 Java api 实现搜索 分页查询 复杂查询 过滤查询 ids查询 等

    目录 Java api 实现搜索 Pom.xml 建立链接 搜索全部记录 增加规则值查某些字段 搜索分页 全代码 Ids 搜索 搜索Match搜索 multi_match 搜索 多字段搜索 复杂查询 bool查询 filter  bool 复杂查询增加过滤器查询 复杂擦好像加排序 日志 思路 参考 api 写法 写Java代码 请求条件构建层次

    2024年02月04日
    浏览(13)
  • SpringBoot 整合 ES 进行各种高级查询搜索

    SpringBoot 整合 ES 进行各种高级查询搜索

    上一章:《ElasticSearch集群的搭建》 如果你还未安装es的相关信息,请先移步至:《ElasticSearch安装》进行安装 如果您的SpringBoot项目还未整合es,请移步至:《SpringBoot整合ElasticSearch实现模糊查询,批量CRUD,排序,分页,高亮》 同时本文的操作中涉及到ElasticSearchRepository和Ela

    2023年04月15日
    浏览(10)
  • elasticsearch(ES)分布式搜索引擎03——(RestClient查询文档,ES旅游案例实战)

    elasticsearch(ES)分布式搜索引擎03——(RestClient查询文档,ES旅游案例实战)

    文档的查询同样适用昨天学习的 RestHighLevelClient对象,基本步骤包括: 1)准备Request对象 2)准备请求参数 3)发起请求 4)解析响应 我们以match_all查询为例 3.1.1.发起查询请求 代码解读: 第一步,创建 SearchRequest 对象,指定索引库名 第二步,利用 request.source() 构建DSL,DSL中可

    2024年02月07日
    浏览(13)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包