文章目录

  • 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. ORA-08002: sequence MySeq.currval is not yet defined in this session
  2. 同一个网站,手机端跟电脑端显示不同是怎么实现的?...
  3. spring-boot-maven-plugin not found的解决方案
  4. 【eclipse】安装 Gradle 插件
  5. gwt入门和进阶_GWT入门
  6. 在Word 2007中为公式编号
  7. [C++]虚函数-同名访问
  8. 图像处理1 高斯模糊
  9. 一款软件测试脚本生成工具
  10. anaconda下载
  11. 南开100题计算机三级数据库,全国计算机三级数据库技术南开100题.doc
  12. gg修改器修改内购_【教程】手把手教你修改微信性别为空
  13. “OpenFeign“ 调取第三方服务接口时出现的“Connection reset“ 解决方案
  14. win10家庭版破解lr11遇到的问题
  15. vue的事件修饰符之.prevent
  16. zlib库介绍四:zlib算法(LZ77、LZ78、霍夫曼编码、滑动窗口、Rabin-Karp算法、哈希链、I/O缓冲区)
  17. ubuntu配置防火墙
  18. Express(一) ——简单入门
  19. 作业2(4)求m和n之间的和
  20. Mac版微信内存飙升卡死解决办法

热门文章

  1. 跨境电商运营培训:亚马逊店铺的运营模式
  2. Transformer代码详解: attention-is-all-you-need-pytorch
  3. 不降低软件质量,如何有效节省开发成本?
  4. 拿到35k入职之后,我在新公司从0到1搭建了一套订单系统!
  5. Android 检测USB连接状态
  6. Kafka:什么是kafka? ①
  7. 基于 Qt 框架的开源笔记软件 VNote
  8. springboot + redis(兼容单机、哨兵、集群) + 分布式锁模拟抢手机
  9. 恒压恒流数控电源,恒压电源,恒流电源
  10. 作品标题这是一篇博客文章标题待定