示例查询:
localhost:8080/content/child/123
此查询应返回父ID等于“123”的doc,然后我需要从返回的文档中获取id并在Elastic中搜索父id等于此id的文档。
示例结果:
{
"id": "test",
"parentId" : "123",
"name" : "bambo"
}
{
"id": "someId",
"parentId" : "test",
"name" : "bambo 2"
}
答案 0 :(得分:0)
首先,GET /content/child/123
表示搜索_index=content; _type=child; _id=123
所在的特定文档,而不是您要查找的内容。 _id
字段与您的id
和parentId
字段完全不同。
据我所知,ES目前没有"嵌套搜索"你描述的功能。您需要进行两次单独的搜索。
要搜索包含特定值(" 123")的字段(" parentId")的文档,您需要以下搜索查询
{
"query": {
"bool": {
"filter": {
"term": {
"parentId": "123"
}
}
}
}
}
首次搜索后,响应将是JSON对象resp
。您可以在resp["hits"]["hits"]
中找到返回结果的列表。然后,解析结果对象以获取所需的id
字段。例如,resp["hits"]["hits"][0]["_source"]["id"]
会为您提供id
字段。
查看此处的文档https://www.elastic.co/guide/en/elasticsearch/reference/current/_the_search_api.html