文章目录

  • Terms Query(多项条件精确匹配)
  • Terms lookup(多项)查找机制
  • terms lookup 查询例子

Terms Query(多项条件精确匹配)

过滤具有与任何提供的多项条件词语(未分析)匹配的字段的文档。 例如:

GET /_search
{"query": {"terms" : { "user" : ["kimchy", "elasticsearch"]}}
}

termsterm意思相近,从字面意思可以知道是多个条件。可以先初步理解为mysql 中的in 语句,如 where name in ('A','B')term可以理解成 =语句,如where name =‘A’

Terms lookup(多项)查找机制

当需要用大量的词语来指定 terms 过滤器时,Terms lookup 机制 可以有助于从索引中的文档中提取这些项值。一个具体的例子是过滤由你的followers 粉丝推送的tweet(理解成微博)。在 term 过滤器中指定的用户ID的数量可以很多。在这种情况下,使用 terms 过滤器的词语查找机制是有意义的。

就是使用terms时,如果枚举项很多,不用一个个的列举出来,如果这些枚举项对应另一个索引中的某个字段(貌似必须是数组结构,未验证非数组结构),可以直接引用。

多项查找机制支持以下选项:

选项 说明
index index (索引)被用来提取项的值。默认当前 index (索引)
type type (类型)被用来提取项的值。
id 用文档 id (ID)来提取项的值。
path 指定为路径的字段,以获取 term (项)筛选器的实际值。 其实就是指定哪些字段作为搜索条件
routing 检索外部 term (项)文档时要使用的自定义路由值。

terms 过滤器的值将从文档中具有指定ID和指定类型和索引的字段中获取。 在内部执行get请求以从指定路径获取值。 目前,此功能正常工作,需要存储_source

必须存储_source

另外,如果“引用”词语数据不大,请考虑使用具有单个分片并在所有节点之间完全复制的索引。 如果可能,查找字词过滤器将更喜欢在本地节点上执行get请求,从而减少了联网需求。

执行包含大量terms 的Terms Query查询请求可能会非常慢,因为每个附加词语都需要额外的处理和内存。 为了防止这种情况,可以在Terms Query查询中直接或通过查找使用的最大术语数限制为65536。可以使用索引设置index.max_terms_count更改特定索引的默认最大值。

terms lookup 查询例子

PUT /users/_doc/2       //user索引
{"followers" : ["1", "3"]   //有个粉丝字段,该用户有2个粉丝
}PUT /tweets/_doc/1   //tweet索引,理解成微博
{"user" : "1"    //tweet归属用户
}GET /tweets/_search    //查询tweet索引
{"query" : {"terms" : {"user" : {        //terms lookup机制,等价于"user" :["1", "3"]"index" : "users","type" : "_doc","id" : "2","path" : "followers"}}}
}

curl 格式查询命令:

curl  -XGET "100.40.164.63:9200/tweets/_search"  --header "Content-Type:application/json" -d '
{"query" : {"terms" : {"user" : {"index" : "users","type" : "_doc","id" : "2","path" : "followers"}}}
}'

如例子中的注释,通过入参,自动帮我们实现了填充,有点像以前的mysql 嵌套查询,select * from table A where name in (select name from B)

文档结构如果是数组形式的,且是对象数组(前面数组就是一个字符串数组),也支持

PUT /users/_doc/2
{"followers" : [{"id" : "1"},{"id" : "2"}]
}

使用 followers.id即可

GET /tweets/_search
{"query" : {"terms" : {"user" : {"index" : "users","type" : "_doc","id" : "2","path" : "followers.id"   //followers.id}}}
}

《Elasticsearch:权威指南》Query DSL -- Term-level queries --Terms Query相关推荐

  1. elasticsearch权威指南-中文

    elasticsearch权威指南-中文 Table of Contents 1. Introduction 2. 入门 i. 是什么 ii. 安装 iii. API iv. 文档 v. 索引 vi. ...

  2. elasticsearch: 权威指南_你还不会Elasticsearch的CUD?

    近端时间在搬砖过程中对es进行了操作,但是对es查询文档不熟悉,所以这两周都在研究es,简略看了<Elasticsearch权威指南>,摸摸鱼又是一天. es是一款基于Lucene的实时分 ...

  3. Elasticsearch权威指南

    在关于Elasticsearch的众多书籍.博客等材料当中,地位最高的自然是Elasticsearch权威指南,若想真正玩转ES,阅读指南是必经之路. 中文版信息 <Elasticsearch: ...

  4. ElasticSearch权威指南学习(结构化查询)

    请求体查询 简单查询语句(lite)是一种有效的命令行adhoc查询.但是,如果你想要善用搜索,你必须使用请求体查询(request body search)API. 空查询 我们以最简单的 sear ...

  5. 【Elasticsearch 权威指南学习笔记】结构化搜索

    结构化搜索(Structured search) 是指有关探询那些具有内在结构数据的过程.比如日期.时间和数字都是结构化的:它们有精确的格式,我们可以对这些格式进行逻辑操作.比较常见的操作包括比较数字 ...

  6. [Elasticsearch] Elasticsearch权威指南翻译目录

    为了方便大家能够更加快速地找到自己需要参考的那部分,对已经翻译完成的部分根据权威指南的目录做了相应目录,希望能够有所帮助. 起步(Getting Started) 1. 你懂的,为了搜索 英文原文链接 ...

  7. Introduction | Elasticsearch权威指南(中文版) | 好的博文地址|官方资源所在位置

    权威指南 https://es.xiaoleilu.com/170_Relevance/10_Scoring_theory.html 好的博文地址(以下博文可以作为学习参考资料) https://bl ...

  8. 《Elasticsearch:权威指南》cat APIs -- cat indices(查看索引信息)

    文章目录 cat indices Primaries 示例 哪些索引状态是 yellow ? 哪个索引的文件数最多? 指定显示哪些列 每一个索引使用了多少内存? 参数解释 cat indices in ...

  9. php多关键词精确查找,查找多个精确值 | Elasticsearch: 权威指南 | Elastic

    查找多个精确值edit term 查询对于查找单个值非常有用,但通常我们可能想搜索多个值. 如果我们想要查找价格字段值为 $20 或 $30 的文档该如何处理呢? 不需要使用多个 term 查询,我们 ...

最新文章

  1. Spark SQL基本操作以及函数的使用
  2. 渡神纪帧数测试软件,渡神纪芬尼斯崛起配置要求高吗 渡神纪配置要求详细介绍_游侠网...
  3. Android GoogleMap 谷歌地图从零开始
  4. 一.Python 基础
  5. 在AngularJS控制器之间共享数据
  6. 专家:教育等领域将成为人工智能“用武之地”
  7. KVO 从基本使用到原理剖析
  8. python 爬虫框架_Python网络爬虫-scrapy框架的使用
  9. 使用 soapUI 测试 REST 服务
  10. pytorch的F.cross_entropy交叉熵函数
  11. python基础-基础知识(包括:函数递归等知识)
  12. 关于Maven的插件maven-dependency-plugin
  13. hdu 6118 最小费用可行流(注意与最大流的区别)
  14. 拓端tecdat|数据类岗位需求的数据面
  15. 拓端tecdat|R如何与Tableau集成分步指南 - 适用于数据科学和商业智能专业人员
  16. twrp gui/actions.cpp 中的功能实现 tw_action ,tw_action_param ,第二章
  17. Win10桌面背景(壁纸)导出工具
  18. App上架Apple App Store和Google Play流程
  19. 【Python标准库】用了Secrets,再也不用担心密码泄露
  20. markdown还需要图床?你out了!用base64代替图床!

热门文章

  1. 开发微信小程序(uniapp)
  2. 跟我学CSE系列之1:CSE开发框架系统架构
  3. python Gooey库打包问题
  4. 关于中断频率、中断响应时间怎么求
  5. 【Hadoop】HA高可用搭建保姆级教程(大二学长的万字笔记)
  6. 全网最新注册ChatGPT账号攻略
  7. 防踩坑宝典:对接支付渠道二三事
  8. 职业学校计算机竞赛,广东省中等职业学校计算机技能竞赛-20210607211419.doc-原创力文档...
  9. 企业网站建设是否需要改版
  10. Java实现:两个乒乓球队进行比赛问题