ElasticSearch 入门之 URI Search API

  • URI Search

    使用http get 方式进行查询

  • Request Body Search

    使用 es 提供的 基于json格式的更加完备的查询语言(DSL)

URI Search API

目标

  • Term Search 和 Phrase Search

  • URI Search 中的参数

URI query

//模板 GET /{index}_search?q={关键字}&df={指定查询的默认字段}&sort={指定排序字段}&from={第几条开始}&size={当前查询返回最多条数}&timeout={超时时间}

GET /donkeyx/_search?q=李思思&df=name&sort=age:desc&from=0&size=1&timeout=1s
{
  "profile": "true"
}
  • q 指定查询的语句 ,使用的Query String Syntax
  • df 默认字段, 不指定时,会对所有字段进行查询
  • Sort 排序
  • form 和size 用于分页
  • Profile 查看查询是如何被执行的

指定字段查询和泛查询

指定字段查询
//指定字段查询,2种
//1
GET /donkeyx/_search?q=李思思&df=name&sort=age:desc&from=0&size=1&timeout=1s
{
  "profile": "true"
}

//2
GET /donkeyx/_search?q=name:李思思&sort=age:desc&from=0&size=1&timeout=1s
{
  "profile": "true"
}

image-20201129193557092

泛查询
//泛查询
GET /donkeyx/_search?q=李思思&sort=age:desc&from=0&size=1&timeout=1s
{
  "profile": "true"
}

image-20201129193849178

DisjunctionMaxQuery 会对文档中所有的字段进行查询

Term Query 和 Phrase Query

以电影 Calendar Girl 为例

  • Calendar Girl 等效于Calendar OR Girl
  • “Calendar Girl” 等效于 Calendar AND Girl 。在Phrase查询中,还要求前后顺序保持一致
分组与引号
  • title:(Calendar AND Girl) 表示查询的字段中,Calendar和Girl2个单词都必须要有。这个类型的查询时BooleanQuery
  • title:“Calendar Girl” 等效于title:(Calendar Girl) 使用的是TermQuery
布尔操作
  • AND / OR / NOT 或者 && / || / ! (必须大写)
  • +表示must
  • -表示must_not

image-20201129202353171

上图中AND 被es 解析为了+title:Calendar +title:Girl 说明es认为这两个单词在title中必须要有

范围查询
  • 区间表示:[] 闭区间,{}开区间
    • year:{1999 TO 2020}
    • year:[* TO 2020]
  • 算数符号
    • year:>2019
    • year:(>2019 && <=2021)
    • year:(+>2019 +<=2021)
通配符查询/模糊/近似查询
  • 通配符查询(通配符查询效率低,占用内存大)
    • ? 表示1个字符,*表示0个或多个字符
      • name:李?思
      • name:李*
  • 模糊匹配与近似查询
    • title:Caelndar~1 虽然这里单词输入错误了,但是用了模糊查询,还是能将近似的查询出来
    • title:“lord rings”~2 使用“”会让es使用Phrase查询,因为加了~2 ,所以查询结果中的lord 和 rings 必定会相隔2个字符
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值