当前位置: 首页 > news >正文

Elasticsearch: Query string与Simple query string

文章目录

  • 1.Query string
    • 1.1 举例
    • 1.2 query_string根一级参数
    • 1.3 查询字符串语法
    • 1.4 proximity query(临近搜索)
    • 1.5 Range(范围)
    • 1.6 boolean操作符
    • 1.7 Grouping(组)
  • 2. Simple query string

1.Query string

  1. 基于提供的查询字符串返回文档,使用一个具有严格语法的解析器
  2. 这个查询使用一个语法基于操作符(像AND 或 NOT)去解析和分隔提供的查询字符串,然后在返回匹配文档前独立分析每个分隔的文本
  3. 你可以使用query_string去创建一个包含通配符,跨多个字段搜索的复杂搜索
  4. 这个查询是严格的,如果查询字符串包含任何无效语法,将会返回错误
    5. 由于对于无效语法会返回一个错误,所以不推荐在搜索框的场景中使用query_string

1.1 举例

GET /_search
{
  "query": {
    "query_string": {
      "query": "(new york city) OR (big apple)",
      "default_field": "content"
    }
  }
}

上述搜索将运行如下搜索过程:(new york city) OR (big apple) 分隔成两部分new york city和big apple。content字段的analyzer将独立的转换每一部分成为分词,因为这个查询语法没有使用空格作为一个操作符,所以new york city按原样传递给analyzer
即:上述语句将执行,以new york city或big apple为输入的查询字符串,采用content字段的analyzer去搜索文档,默认有点类似match搜索

1.2 query_string根一级参数

挑几个重要的说

  1. query
    必须字段,搜索你想要解析的字符串
  2. analyzer
    analyzer被用于转换查询字符串变成词条
  3. default_operator
    (1)OR:默认。例如:一个查询字符串capital of Hungary被解释为capital OR of OR Hungary
    (2)AND:例如:capital of Hungary被解释为capital AND of AND Hungary
  4. fields
    可选参数。你希望搜索的一个字段数组

1.3 查询字符串语法

  1. 查询字符串被解析成一系列的分词和操作符,一个分词可以实一个单独的分词-quick or brown;或者一个短语,需要双引号包裹起来-“quick brown”-以相同的顺序搜索所有单词
  2. 指定要搜索的字段

(1)content字段包含city

GET /my-test/_search
{
  "query": {
    "query_string": {
      "query": "content:city"
    }
  }
}

(2)content字段包含city或apple

GET /my-test/_search
{
  "query": {
    "query_string": {
      "query": "content:(city or apple)"
    }
  }
}

(3)content字段包含短语"new york"

GET /my-test/_search
{
  "query": {
    "query_string": {
      "query": "content:\"new york\""
    }
  }
}

(4)content字段不为null

GET /my-test/_search
{
  "query": {
    "query_string": {
      "query": "_exists_:content"
    }
  }
}

1.4 proximity query(临近搜索)

虽然短语查询(用双引号包裹的字符串,例如"john smith")希望所有的分词都以完全相同的顺序排列,但是proximity query允许指定的单词分开更远或者不同的顺序。一个proximity search允许我们去指定一个短语中的最大编辑距离,例如:
“fox quick”~5
字段中的文本越接近查询字符串中指定的原始顺序,该文档被认为越相关。与上市示例相比,"quick fox"比"quick brown fox"更相关

1.5 Range(范围)

可以为日期、数字或字符串字段指定范围。包含范围可以用方括号[min TO max],排除范围可以用大括号{min TO max}

举例:
(1)2012年所有的日期

date:[2012-01-01 TO 2012-12-31]

(2)数字1~5

count:[1 TO 5]

(3)alpha和omega之间的标签,不包括alpha和omega

tag:{alpha TO omega}

(4)10以上的数字

count:[10 TO *]

(5)2012年以前的日期

date:{* TO 2012-01-01}

(6)大括号和方括号组合
数字1~5但是不包括5

count:[1 TO 5}

(7)还有如下用法

age:>10
age:>=10
age:<10
age:<=10
age:(>=10 AND <20)
age:(+>=10 +<20)

1.6 boolean操作符

(1)+ :该分词必须存在
(2)- : 该分词必须不存在
(3)其它的分词是可选的

举例:

quick brown +fox -news
  • fox必须存在
  • news必须不存在
  • quick和brown是可选的,他们的存在将增加相关性

操作符AND, OR 和 NOT(也被写做&& , || ,! )是支持的
所以上述实例也可以写成:

((quick AND fox) OR (brown AND fox) OR fox) AND NOT news

使用matc查询对比一下:

{
    "bool": {
        "must":     { "match": "fox"         },
        "should":   { "match": "quick brown" },
        "must_not": { "match": "news"        }
    }
}

1.7 Grouping(组)

status:(active OR pending) title:(full text search)^2

2. Simple query string

相关文章:

  • 训练神经网络用什么显卡,cpu可以训练神经网络吗
  • 中秋节到啦!程序媛请大家品尝月饼啊
  • BOM介绍以及应用以及this指向问题
  • python中列表(list)与numpy(array)的区别,行与列与维度的选择
  • js防抖和节流
  • c语言分层理解(c语言指针(下))
  • 中国剩余定理(Chinese remainder theorem, CRT)
  • Windows与网络基础-9-windows基本命令-网络相关操作
  • Label Matching Semi-Supervised Object Detection
  • 【web-利用信息泄露】(10.3)防止信息泄露
  • Vue响应式数据的原理,双向数据绑定,循环渲染中key的应用,过滤器
  • 神经网络预测值差很多,神经网络预测的局限性
  • Django数据库操作
  • 深度神经网络训练,基于深度神经网络
  • 网课查题微信公众号搭建教程
  • 收藏网友的 源程序下载网
  • 【React系列】如何构建React应用程序
  • 30天自制操作系统-2
  • echarts花样作死的坑
  • Java 网络编程(2):UDP 的使用
  • Java到底能干嘛?
  • JS笔记四:作用域、变量(函数)提升
  • Material Design
  • mongo索引构建
  • Mysql5.6主从复制
  • Sass 快速入门教程
  • 爱情 北京女病人
  • 给Prometheus造假数据的方法
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 前端技术周刊 2019-02-11 Serverless
  • 如何胜任知名企业的商业数据分析师?
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 我与Jetbrains的这些年
  • 正则与JS中的正则
  • # .NET Framework中使用命名管道进行进程间通信
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • $.proxy和$.extend
  • (007)XHTML文档之标题——h1~h6
  • (09)Hive——CTE 公共表达式
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (利用IDEA+Maven)定制属于自己的jar包
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .Net Memory Profiler的使用举例
  • .NET下的多线程编程—1-线程机制概述
  • ??如何把JavaScript脚本中的参数传到java代码段中
  • @Documented注解的作用
  • @取消转义