前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Elasticsearch】4. Search API

【Elasticsearch】4. Search API

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

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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档