我一直在尝试搜索具有父查询的内容,但由于找不到合适的操作步骤而无法执行。例如,我有角色表,有用户表,我使用1作为管理员角色,并且在用户表中,我有一个名为user_role的属性,并且我已经记录了user_role = 1如何使用具有父查询的映射然后进行相应的搜索。
谢谢, 阿里。
https://www.elastic.co/guide/en/elasticsearch/reference/5.5/mapping-parent-field.html
无法完全理解。
答案 0 :(得分:0)
让我们从https://www.elastic.co/guide/en/elasticsearch/reference/5.5/mapping-parent-field.html中获取映射和样本数据:
PUT my_index
{
"mappings": {
"my_parent": {},
"my_child": {
"_parent": {
"type": "my_parent"
}
}
}
}
PUT my_index/my_parent/1
{
"text": "This is a parent document"
}
PUT my_index/my_child/2?parent=1
{
"text": "This is a child document"
}
PUT my_index/my_child/3?parent=1&refresh=true
{
"text": "This is another child document"
}
由于两个子文档都匹配,因此在同一页面上的查询将获取单个父文档:
GET my_index/my_parent/_search
{
"query": {
"has_child": {
"type": "my_child",
"query": {
"match": {
"text": "child document"
}
}
}
}
}
稍作修改,您就可以在has_parent
上进行搜索:
GET my_index/my_child/_search
{
"query": {
"has_parent": {
"parent_type": "my_parent",
"query": {
"match": {
"text": "parent"
}
}
}
}
}
PS:在6.x中,这已经发生了很大变化。如果可能的话,我现在移至6,以避免以后出现升级麻烦。