文章目录

  • term 查询
    • 介绍
    • term 的顶级参数
    • field的二级参数
  • terms查询
    • 介绍
    • terms的顶级参数
  • terms set 查询
    • 介绍
    • terms set的顶级参数
    • field的二级参数

term 查询

介绍

返回在提供的字段中包含精确值的文档。

可以使用term查询根据价格、产品ID或用户名等精确值查找文档。

注意:避免对text字段使用term查询。会查询不出任何结果的

例如:

GET /_search
{"query": {"term": {"user.id": {"value": "kimchy","boost": 1.0}}}
}

term 的顶级参数

<field> (Required, object) 你希望查询的字段名.

field的二级参数

参数名 描述
value (Required, string) 您希望在提供的<field>中找到的值。要返回文档,该参数必须完全匹配字段值,包括空格和大小写。
boost (Optional, float) 用于降低或提高查询相关性得分的浮点数。默认为1.0。
case_insensitive [7.10.0] (Optional, Boolean) 当设置为true时,允许值与索引字段值的ASCII不区分大小写匹配。默认值为false,这意味着匹配的大小写取决于基础字段的映射。

terms查询

介绍

返回在提供的字段中包含一个或多个精确值的文档。

terms查询与term查询相同,只是您可以搜索多个值。

例如,下面的查询返回id为kimchy或者elkbee的文档

GET /_search
{"query": {"terms": {"user.id": [ "kimchy", "elkbee" ],"boost": 1.0}}
}

terms的顶级参数

参数名 描述
<field> (Optional, object) 您希望搜索的字段数组. 默认情况下,Elasticsearch将terms查询的这个参数数组大小限制为最多65,536个, 您可以通过index.max_terms_count这个设置来变更。
boost (Optional, float) 用于降低或提高查询相关性得分的浮点数。默认为1.0。

terms set 查询

介绍

返回在提供的字段中包含最少数量的精确值的文档。

terms_set查询与terms查询相同,只是您可以定义返回文档所需的匹配词条的数量。例如:

  • 一个名为programming_languages的字段包含已知编程语言的列表,例如用于工作候选人的c++、java或php。可以使用terms_set查询返回至少匹配其中两种语言的文档。
  • 一个名为permissions权限字段,包含应用程序可能的用户权限列表。可以使用terms_set查询返回匹配这些权限子集的文档。

terms set的顶级参数

<field> (Required, object) 你希望查询的字段数组.

field的二级参数

参数名 描述
terms (必需的,字符串数组)您希望在提供的<field>中找到的词条数组。要返回文档,词条数量(传入的数组大小)必须与字段值的数量精确匹配,包括空格和大写。
minimum_should_match_field (Optional, string) 字段名,填写的字段应该是个数字,包含返回文档所需的匹配条件的数量。
minimum_should_match_script (Optional, string) 自定义脚本,包含返回文档所需的匹配条件的数量。

例如:

#1,有如下索引
# required_matches字段,一个long字段。此字段包含返回文档所需的匹配词条的数量。
PUT /job-candidates
{"mappings": {"properties": {"name": {"type": "keyword"},"programming_languages": {"type": "keyword"},"required_matches": {"type": "long"}}}
}#2,插入一个文档,这个文档必须匹配俩个词条 "c++", "java" ,都匹配的情况下才返回。
# 包含?refresh参数,这样文档就可以被立即进行搜索。
PUT /job-candidates/_doc/1?refresh
{"name": "Jane Smith","programming_languages": [ "c++", "java" ],"required_matches": 2
}
#这个文档必须匹配三个词条"c++", "java","php",都匹配的情况下才返回。
PUT /job-candidates/_doc/2?refresh
{"name": "Jane Smith","programming_languages": [ "c++", "java", "php" ],"required_matches": 3
}#这个文档只要匹配三个词条"c++", "java", "javascript"中的任意一个,就会返回。
PUT /job-candidates/_doc/3?refresh
{"name": "Jane Smith","programming_languages": [ "c++", "java", "javascript" ],"required_matches": 1
}#3,例如以下查询,将会把_id为1、2、3的文档都返回。
GET /job-candidates/_search
{"query": {"terms_set": {"programming_languages": {"terms": [ "c++", "java", "php" ],"minimum_should_match_field": "required_matches"}}}
}#4,例如以下查询,只返回_id为1、3的文档。
GET /job-candidates/_search
{"query": {"terms_set": {"programming_languages": {"terms": [ "c++", "java","javascript"],"minimum_should_match_field": "required_matches"}}}
}

13.Elasticsearch 7.15 Query DSL 之 term查询、terms查询和terms set查询相关推荐

  1. 15.Elasticsearch 7.15 Query DSL 之 Wildcard查询、Regexp查询

    Wildcard查询 介绍 返回包含与通配符模式匹配的文档. 例子 以下搜索返回 user.id 字段包含以 ki 开头并以 y 结尾的文档.这些匹配项可以包括 kiy.kity 或 kimchy G ...

  2. ElasticSearch高级 (Query DSL查询 bulk批量操作 导入数据 各种查询 实战技巧-优化比重 全量与增量数据同步)

    ElasticSearch高级 01-Query DSL(Domain Specific Language) 1 查询上下文 2 相关度评分:_score 3 元数据:_source 4 Query ...

  3. python 查询 elasticsearch 常用方法(Query DSL)

    2019独角兽企业重金招聘Python工程师标准>>> 1. 建立连接 from elasticsearch import Elasticsearch es = Elasticsea ...

  4. elasticsearch系列四:搜索详解(搜索API、Query DSL)

    一.搜索API 1. 搜索API 端点地址 从索引tweet里面搜索字段user为kimchy的记录 GET /twitter/_search?q=user:kimchy 从索引tweet,user里 ...

  5. spring elasticsearch 按条件删除_Elasticsearch系列之Query DSL

    1 前言 我们先通过阅读官方文档,了解一下什么是 Query DSL . 1.1 Query DSL Elasticsearch provides a full Query DSL (Domain S ...

  6. 第三章 Elasticsearch Query DSL -- 查询

    第三章 Elasticsearch Query DSL -- 查询 摘要 查询和过滤的上下文(context) 相关性得分 查询上下文 过滤上下文 示例(下面这些查询参数,后续会详述) 全文查询 in ...

  7. Elasticsearch高级查询Query DSL

    一.高级查询Query DSL简介 1.Query DSL(简介 Elasticsearch中提供了一种强大的检索数据方式,这种检索方式称之为Query DSL(Domain Specified La ...

  8. Elasticsearch Query DSL基础介绍

    查询语法(Query DSL) Elasticsearch提供标准RESTful风格的查询DSL来定义查询.可以将查询 DSL 看作是由两种子句组成的查询的 AST (Abstract Syntax ...

  9. Elasticsearch之Query DSL语法入门

    1. query DSL入门 1.1 DSL query string 后边的参数原来越多,搜索条件越来越复杂,不能满足需求. GET /book/_search?q=name:java&si ...

最新文章

  1. python print函数用法_Python3.2中Print函数用法实例详解
  2. 关于android工程添加support-v7包的问题
  3. 深入浅出学Hive:Hive内建操作符与函数开发
  4. JavaFX学习之Web
  5. [pytorch、学习] - 3.12 权重衰减
  6. 正确获取Java事件通知
  7. java 服务降级_微服务的降级学习
  8. 万能驱动安装器_Windows驱动安装指南
  9. python设置tk退出_退出tkinter gui
  10. NSDate的简单用法
  11. 【编译器】VSCode配置Go语言开发环境
  12. windows 下rsync
  13. python GIL 全局锁
  14. Android应用内存泄漏的定位、分析与解决策略 1
  15. 基于SpringBoot的框架SOFABoot,青出于蓝而胜于蓝
  16. 关于计算机高中英语作文,关于电脑的高中英语作文:Computers
  17. JZOJ.5236【NOIP2017模拟8.7】利普希茨
  18. 关于WBS的一些知识点
  19. win10双 cd linux,win10系统将CdLinux装入硬盘的还原方案
  20. python txt文件读写 pandas_Python数据分析之Pandas读写外部数据文件!

热门文章

  1. 强密码生成器[更新中]
  2. android中如何取得用户手机的常用联系人(即收藏夹的联系人)
  3. WEB漏洞篇——跨站脚本攻击(XSS)
  4. 项目管理专业就业情况如何?
  5. oracle序列查询
  6. 一张世界上智慧最集中的照片
  7. 英文论文怎么做实验?
  8. 华为入局电视行业或导致国产电视企业放弃其芯片
  9. inline函数用法详解
  10. Java的setRecord怎么用,Data set record formats数据集记录根式