我有 users 和 posts 的索引。 在帖子索引中,我有user_id参数,当我使用user_id搜索 帖子 索引中的帖子时,我应该在一个对象中获得完整的帖子和用户数据。 如何发送两个索引中的搜索查询?
答案 0 :(得分:1)
请查看多重搜索功能:https://www.elastic.co/guide/en/elasticsearch/reference/current/search-multi-search.html
响应是每个搜索请求的搜索响应和状态的数组,其中保留了多个搜索请求的顺序
答案 1 :(得分:0)
我创建了以下数据模型作为示例。我的索引将具有以下格式的数据模型。
Posts:
- post_id
- title
- description
* comments
- user_id
- firstname
- comment
* - meaning multiple values
基本上,我正在做的是将单个帖子的所有数据保存在单个文档中。
PUT post
{
"mappings":{
"mydocs":{
"properties":{
"comments":{
"type":"nested",
"properties":{
"userid":{
"type":"text"
},
"firstname":{
"type":"text"
},
"comment":{
"type":"text"
}
}
},
"post_id":{
"type":"text"
},
"post_description":{
"type":"text"
},
"post_title":{
"type":"text"
},
"owner":{
"type":"text"
}
}
}
}
}
POST post/mydocs/1
{
"post_id": "1",
"owner": "1",
"post_description": "I'm doing some analysis on this and its very confusing. Can anyone help me here?",
"post_title": "neo4j vs elasticsearch",
"comments": [
{
"userid": "2",
"firstname": "John",
"comment": "Both are totally different here"
},
{
"userid": "3",
"firstname": "Jack",
"comment": "Depends on the user case, doesn't it. "
}
]
}
POST post/_search
{
"_source":[
"post_id",
"comments.userid",
"comments.firstname"
],
"query":{
"bool":{
"must":[
{
"match_all":{} // you can put any condition here
},
{
"nested":{
"path":"comments",
"query":{
"match":{
"comments.userid":"2"
}
}
}
}
]
}
}
}
它可能并不完美,可能看起来模糊/有趣,但是我希望这对您的理解有所帮助。
事实上,您实际上可以检查stackoverflow的数据模型(称为 POST 的实体)及其弹性搜索实现。请参阅此LINK,以了解他们如何在其rdbms数据库中对post
进行建模,以及查阅此LINK,以了解如何为同一张表创建索引。
我真的希望这会有所帮助:)