具有以下映射...
curl -XPUT 'localhost:9200/myindex' -d '{
"mappings": {
"my_parent": {},
"my_child": {
"_parent": {
"type": "my_parent"
}}}}'
......以下父母:
curl -X PUT localhost:9200/myindex/my_parent/1?pretty=true' -d '{
"title" : "Microsiervos - Discos duros de 10TB",
"body" : "Empiezan a sacar DD de 30GB en el mercado"
}'
和以下孩子:
curl -XPUT 'localhost:9200/myindex/my_child/2?parent=1' -d '{
"user": "Pepe"
}'
如果我执行以下has_child
查询:
curl -XGET 'localhost:9200/myindex/my_parent/_search?pretty=true' -d '{
"query": {
"has_child": {
"type": "my_child",
"query" : {
"query_string" : {
"default_field" : "user",
"query" : "Pepe"
}}}}}'
我得到了所需的输出。找到Pepe
,并显示他的父亲:
"hits" : {
"total" : 1,
"max_score" : 1.0,
"hits" : [ {
"_index" : "myindex",
"_type" : "my_parent",
"_id" : "2",
"_score" : 1.0,
"_source":{
"title" : "Microsiervos - En el 69 llegamos a la luna",
"body" : "Se cumplen 3123 anos de la llegada a la luna"
}
但如果我试图反过来试图让孩子们使用has_parent
:
curl -XGET 'localhost:9200/myindex/my_parent/_search?pretty=true' -d '{
"query": {
"has_parent": {
"parent_type": "my_parent",
"query" : {
"query_string" : {
"default_field" : "body",
"query" : "mercado"
}}}}}'
我没有得到任何点击。我想把Pepe
个孩子作为输出。我错过了什么或做错了什么?
PS:我使用的是Elasticsearch 2.1.1
答案 0 :(得分:1)
您在上面犯了一个错误。您正在搜索my_parent
类型。如果您想使用父级获取子级,则应从child_type
获取它。
将查询更改为:
curl -XGET 'localhost:9200/myindex/my_child/_search?pretty=true' -d
'{
"query": {
"has_parent": {
"parent_type": "my_parent",
"query" : {
"query_string" : {
"default_field" : "body",
"query" : "mercado"
}
}
}
}
}'
请注意我已经使用过
curl -XGET 'localhost:9200/myindex/my_child/_search?pretty=true'
而不是
curl -XGET 'localhost:9200/myindex/my_parent/_search?pretty=true'