elasticsearch searchAPI

Search API

elasticSearch支持两种查询方式:

1:URI Search

  • q 指定查询的语句,语法为:Query String Syntax
  • df:q中不指定字段时默认查询的字段,如果不指定,es会查询所有字段
  • sort:排序
  • timeout:指定超过时间,默认不超时
  • form,size用于分页

Query String Syntax

term,phrase

布尔查询:

AND ,OR NOT (全部要大写)
+(%2B),-分别对应must和must_not

范围查询-支持数值和日期

区间写法:闭区间:[],开区间用{}

  • age:[1 TO 10 ] == 1<=age<=10
  • age:[1 TO 10 } == 1<=age<10
  • age:[1 TO] == age>=1
  • age:[* TO age] == age<=10
    算数符号写法:
    age:>=1
    age:(>=1&&<=10) 或者 age:(+>=1 +<=10)
通配符查询
  • ?代表1个字符,*代表0个或者多个字符
正则表达式匹配:
模糊匹配
  • name:roam~1:匹配与roam差一个character的词,比如foam,roams等
近似度查询:
  • “fox quick”~5:以term为单位进行差异比较,如“quick fox brown fox ”会被匹配

Query DSL 2:RequestBody:将查询通过RequestBody发送到服务端

基于json定义的查询语言,主要包括以下两种类型:

字段类查询:比如term,match,range等,只针对某个字段进行查询

全文匹配

针对text类型的字段进行全文检索,会对查询语句先进行分词处理,如match match_phrase等query类型

  1. match 查询:
    minimum_should_match:最小匹配term个数
    operator:bool操作类型
  2. match_phrase
    匹配句子
  3. query_string:
    和URIquery中的q,df一样。
  4. simple Query String Query
    不能使用AND OR NOT 关键字,兼容错误
    +代表AND |代表OR -代表NOT
  5. match_phrase_prefix用法和match_phrase一样,作用是匹配前max_expansions个term
Term Level Query
  1. term query不会将查询的关键字分词处理,会将关键字作为一个整体
  2. terms query 可以将多个term放在一起查询
  3. range query :可用来范围查询数值或者日期
    gte(Greater than or equal to) >=
    gt (Greater than) >
    lte(Less than or equal to)<=
    lt(less than) <
bool query
  1. filter 只过滤符合条件的文档,不计算相关性得分
  2. must 文档必须符合must中所有条件,会影响相关性得分
  3. must_not 文档必须不符合must_not中的所有条件
  4. should 文档可以符合should中的条件,会影响相关性得分
单词匹配

不会对查询做分词处理,直接去匹配字段的倒排索引,如term,terms,range等query类型

  • 复合查询:如bool查询,包含一个或多个字段类查询或者复合查询
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值