首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >术语查找机制查询可以嵌套吗?

术语查找机制查询可以嵌套吗?
EN

Stack Overflow用户
提问于 2015-12-24 01:42:01
回答 1查看 863关注 0票数 3

我想知道我是否可以在另一个术语查找机制中嵌套一个术语查找机制查询。例如:

代码语言:javascript
复制
curl -XPUT localhost:9200/users/user/2 -d '{
   "tweets" : ["1", "3"]
}'

curl -XPUT localhost:9200/tweets/tweet/1 -d '{
   "uuid" : "1",
   "comments":["1","2","3"]
}'

curl -XPUT localhost:9200/comments/comment/1 -d '{
   "uuid" : "1"
}'

如您所知,我们可以使用术语查找机制查询来获取属于用户的tweet:

代码语言:javascript
复制
curl -XGET localhost:9200/tweets/tweet/_search -d'{
  "query" : {
    "terms" : {
      "uuid" : {
        "index" : "users",
        "type" : "user",
        "id" : "2",
        "path" : "tweets"
      }
    }
  }
}'

但是,如果我想得到评论,我必须做另一个查询。但是我的文件这么多,这不是一个好方法。因此,我想嵌套术语查找查询,以便只按用户的id在一个查询中获得注释,可以吗?如果你能给我一些帮助,我会非常感激的。谢谢!:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-24 04:43:46

目前,据我所知,这是不可能的,因为您希望在一个查询中返回来自三个不同索引的数据,这相当于一个联接。术语查找查询将实现两个索引之间的“只”连接(考虑到ES最初不支持联接这一事实,这已经相当酷了)。

解决这一问题的一种方法是重构数据模型,以摆脱comments索引,并在tweet映射类型中使用父/子和/或嵌套关系。由于一条评论只能属于一条推特,而且在一条推特上通常不会有数百条评论(我认为99%的情况下每条推文只有不到6条评论,如果有的话),您可以将评论添加为儿童文件嵌套文档 (我的首选),而不是仅仅将它们的ids存储在comments数组中。这样,您就可以在现有查询中立即得到您的评论,而无需再进行第二次查询。

代码语言:javascript
复制
curl -XPUT localhost:9200/tweets/tweet/1 -d '{
   "uuid" : "1",
   "comments":[{
      "id": 1,
      "content": "Nice tweet!"
   },{
      "id": 2,
      "content": "Way to go!"
   },{
      "id": 3,
      "content": "Sucks!"
   }]
}'

或者您可以等待此拉请求(#3278) (术语查询/筛选查找)。(加入过滤器))合并,这将有效地允许你做你想要的,但公关已经创建了两年多以前,仍然有冲突需要解决。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34446193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档