Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【Elasticsearch】4. Search API

【Elasticsearch】4. Search API

原创
作者头像
历久尝新
修改于 2020-12-15 11:54:06
修改于 2020-12-15 11:54:06
6880
举报
文章被收录于专栏:学而时习之学而时习之

Search API

  • URI Search:在URL中使用查询参数
  • Request Body Search:使用Elasticsearch提供的,基于json格式的更加完备的Query Domain Speacific Language(DSL)

指定查询的索引

  • /_search:集群上所有的索引
  • /index1/_search:index1
  • /index1,index2/_search:index1和index2
  • /index/_search:以index开头的索引

URI查询

  • 使用"q",指定查询字符串
  • "query string syntax",kv查询字符串
  • eg:curl -XGET "http://localhost:9200/movies/_search?q=title:Toy Story",
    • q用来表示查询的内容
    • 搜索叫做toy stroy 的电影

Request Body

  • eg: curl -XGET "http://localhost:9200/movies/_search" -H 'Content-Type: application/json' -d '{"query": {"match_all": {}}}'
    • -XGET:支持post和get
    • movies:需要操作的索引名
    • _search:执行搜索的操作
    • query:查询
    • match_al:返回所有文档

URI Search - 通过URI query 实现搜索

GET /movies/_search?q=2012&df=title&sort=year:desc&from=0&size=10&timeout=1s

{

"profile": true

}

  • q 指定查询语句,使用query string syntax
  • df 默认子都拿,不指定时,会对有所字段进行查询
  • sort 排序/ from 和 size 用于分野
  • profile 可以查看查询是如何被执行的

URI Search Deom

  • 指定字段查询
    • GET movies/_search?q=2012&df=title
    • GET movies/_search?q=title:2012
  • 泛查询
    • GET movies/_search?q=2012
    • GET movies/_search?q=title:Beautiful Mind

Query string Syntax

  • 指定字段 vs 泛查询
    • q=title:2012 / q=2012
  • Term vs Phrase
    • Beautiful Mind 等效于 Beautiful OR Mind
    • "Beautiful Mind",等效于 Beautiful AND MIND。Phrase查询,还要求前后
  • 分组与引号
    • title:(Beautiful AND Mind)
    • title="Beautiful Mind"
  • 布尔操作
    • AND / OR / NOT 或者 && / || / !
      • 必须大写
      • tiltle:(matrix NOT reloaded)
  • 分组
    • + 表示must
    • - 表示must_not
    • tilte:(+matrix -reloaded)
  • 范围查询
    • 区间表示:[]闭区间,{}开区间
      • year:{2019 TO 2018]
      • year:[* TO 2018]
  • 算数符号
    • year:>2010
    • year:(>2010 && <=2018)
    • year:(+>2010 +<2018)
  • 通配符查询(通配符查询效率太低,占用内存大,不建议使用,特别是放在最前面)
    • ?代表1个字符,*代表0或多个字符
      • title:mi?d
      • title:be*
  • 正则表达
    • title:[bt]oy
  • 模糊匹配与近似匹配
    • title:befutifl~1
    • title:"lord rings"~2

 Request Body Search

  • 将查询语句通过http request body 发送给es
  • Query DSL
  • 分页
  • From从0开始,默认返回10个结果
  • 获取考后的翻页成本较高
  • 排序
  • 最好在"数字型"和"日期型"字段上排序
  • _source filtering
  • 如果_source 没有存储,那就只返回匹配的文档的元数据
  • _source 支持使用通配符
  • 脚本字段
    • eg:订单中有不同汇率,需要对不同汇率进行结算排序
  • 使用查询表达式 - Match
  • 短语搜索 -Match Phrase

query string && simple query string

  • query string
    • 类似url query
  • simple query string
    • 类似query string, 但是会忽略语法的错误,同时只支持部分查询语法
    • 不支持 AND OR NOT 会当作字符串处理
    • Term 之间默认的关系是OR ,可以指定operator
  • 支持 部分逻辑
    • + 代替AND
    • - 代替NOT
    • | 代替OR

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
看完这篇还不会 Elasticsearch 搜索,那我就哭了!
本文主要介绍 ElasticSearch 搜索相关的知识,首先会介绍下 URI Search 和 Request Body Search,同时也会学习什么是搜索的相关性,如何衡量相关性。
武培轩
2020/03/13
8650
Search - 一文入门ElasticSearch(节点、分片、CRUD、倒排索引、分词)
ElasticSearch是非常重要的检索工具,利用分词、索引(倒排索引)、分词从众多检索工具中脱颖而出,本章是入门基础学习篇内容。
stark张宇
2023/03/16
4.2K0
Elasticsearch从入门到放弃:再聊搜索
在前文中我们曾经聊过搜索文档的方法,Elasticsearch 一般适用于读多写少的场景,因此我们需要更多的关注读操作。
Jackeyzhe
2020/07/14
4690
Elasticsearch从入门到放弃:再聊搜索
Elastic学习之旅 (8) 深入词项和全文搜索
相信很多童鞋和我一样,有点傻傻分不清Term查询和全文查询的区别,那么今天我们就来一起梳理一下。
Edison Zhou
2024/04/10
2280
Elastic学习之旅 (8) 深入词项和全文搜索
Elasticsearch 利用API进行搜索
ES 在搜索上对外开放了 Resultful API, 方便各个语言调用,那么他调用有两种方式,一种就是单纯将搜索的参数放到url上,还有就是可以放到Request Body里面,我们来依次看看。
憧憬博客
2020/07/21
8150
Elasticsearch 利用API进行搜索
Elasticsearch 6.x版本全文检索学习之Search API
  方式一、GET /_search,对es中所有的数据进行查询。   方式二、GET /my_index/_search,针对单个索引的数据进行查询。   方式三、GET /my_index1,my_index2/_search,针对两个索引的数据进行查询。   方式四、GET /my_*/_search,指定索引查询,可以一次查询多个。
别先生
2019/11/03
1.4K0
Elasticsearch7教程
Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。
Remember_Ray
2021/04/05
4.2K0
Elasticsearch Query DSL之全文检索(Full text queries)下篇
本文将继续介绍Elasticsearch Query DSL之全文检索(Full text queries)方式的后3种。
丁威
2019/06/10
2.2K0
Elasticsearch搜索特性
方案一、可以是用wildcard通配符,但是要设置不分词,这种方案性能不好 方案二、可以使用ngram分词器 “min_gram”: 2,”max_gram”: 3 单词假设是 abcde0001 ab bc cd abc cde 001.。。。等等 被分词2个字母一组和3个字符一组。。、。
丁D
2022/08/12
8420
017.Elasticsearch搜索操作入门篇
1. 多种搜索方式 1.1 Query String Search:在请求URL中包括search的参数 # 语法 curl -X GET "ip:port/index_name/type_name/
CoderJed
2020/07/06
1.3K0
Elasticsearch安装使用教程
Elasticsearch是一个全文搜索引擎。安装Elasticsearch时需要先安装Java。 wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.4.2.zip unzip elasticsearch-1.4.2.zip cd elasticsearch-1.4.2 ./bin/elasticsearch
星哥玩云
2022/07/04
4280
Elasticsearch安装使用教程
Elastic学习之旅 (6) Query DSL
大家好,我是Edison。首先说声抱歉,这个ES学习系列很久没更新了,现在继续吧。
Edison Zhou
2024/04/05
2070
Elastic学习之旅 (6) Query DSL
干货 | Elasticsearch 检索类型选型指南
以 Elasticsearch 8.1 官方文档为例,检索分类不会也不可能超出这个范围。
铭毅天下
2022/05/23
1.3K0
干货 | Elasticsearch 检索类型选型指南
Elasticsearch学习(五)Elasticsearch中的mapping问题,Search 搜索详解
Mapping在Elasticsearch中是非常重要的一个概念。决定了一个index中的field使用什么数据格式存储,使用什么分词器解析,是否有子字段等。
一写代码就开心
2021/03/02
1.9K0
Elasticsearch学习(五)Elasticsearch中的mapping问题,Search 搜索详解
Elasticsearch(六)——Query
上面的语句意思查询userz字段包含tom的文档,结果按照age升序排列,返回第5-14个文档,如果超过1s没有结束,则超时结束 泛查询 等效于在所在字段去匹配改term
羊羽shine
2019/05/29
9020
触类旁通Elasticsearch:搜索
ES的搜索请求执行流程如图1所示。图中索引包含两个分片,每个分片有一个副本分片。在给文档定位和评分后,缺省只会获取排名前10的文档。REST API搜索请求被发送到所连接的节点,该节点根据要查询的索引,将这个请求依次发送到所有的相关分片(主分片或者副本分片)。从所有分片收集到足够的排序和排名信息后,只有包含所需文档的分片被要求返回相关内容。这种搜索路由的行为是可配置的,图1展示的默认行为,称为查询后获取(query_then_fetch)。
用户1148526
2019/05/25
3.4K0
一起学Elasticsearch系列-模糊搜索
在 Elasticsearch 中,模糊搜索是一种近似匹配的搜索方式。它允许找到与搜索词项相似但不完全相等的文档。
BookSea
2023/12/13
9860
一起学Elasticsearch系列-模糊搜索
012.Elasticsearch基础API入门以及term与match综合测试
当向一个不存在的index中添加document时,可以自动创建索引,也可以根据传入的数据自动创建mapping,ES也会自动对这些文档进行倒排索引
CoderJed
2020/06/19
8170
Elasticsearch使用:Search 概括
在 Elasticsearch 中的搜索中,有两类搜索:queries和aggregations。
HLee
2021/01/27
1.2K0
Elasticsearch使用:Search 概括
Elasticsearch 相关 api 操作
A. es 操作 1. 检查 es 集群健康状态 bash命令:curl -XGET 'localhost:9200/_cat/health?v&pretty' kibana命令:GET /_cat
潘成涛
2018/01/18
8790
Elasticsearch 相关 api 操作
相关推荐
看完这篇还不会 Elasticsearch 搜索,那我就哭了!
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档