这就是我的映射看起来像
{
"state":"open",
"settings":{
"index":{
"creation_date":"1453816191454",
"number_of_shards":"5",
"number_of_replicas":"1",
"version":{
"created":"1070199"
},
"uuid":"TfMJ4M0wQDedYSQuBz5BjQ"
}
},
"mappings":{
"Product":{
"properties":{
"index":"not_analyzed",
"store":true,
"type":"string"
},
"ProductName":{
"type":"nested",
"properties":{
"Name":{
"store":true,
"type":"string"
}
}
},
"ProductCode":{
"type":"string"
},
"Number":{
"index":"not_analyzed",
"store":true,
"type":"string"
},
"id":{
"index":"no",
"store":true,
"type":"integer"
},
"ShortDescription":{
"store":true,
"type":"string"
},
"Printer":{
"_routing":{
"required":true
},
"_parent":{
"type":"Product"
},
"properties":{
"properties":{
"RelativeUrl":{
"index":"no",
"store":true,
"type":"string"
}
}
},
"PrinterId":{
"index":"no",
"store":true,
"type":"integer"
},
"Name":{
"store":true,
"type":"string"
}
}
},
"aliases":[
]
}
}
我想查询Printer子对象并取回产品。当我使用术语查询查询如下时,它适用于案例2230,但是当我给出hl-2230时,它不会返回任何内容,因为分析了名称字段。在这种情况下,我需要query_string来获得预期的结果。
{
"query": {
"has_child": {
"type": "Printer",
"query": {
"term": {
"Name": "2230"
}
}
}
}
}
当我尝试查询时,我收到[has_child]查询不支持[query_string]]。我尝试了匹配查询,我收到相同的消息。 has_child只能用于术语查询吗?如果是这种情况,我怎样才能达到预期的效果呢?
"query": {
"has_child": {
"type": "Printer",
"query_string": {
"default_field": "Name",
"query": "HL-2230"
}
}
答案 0 :(得分:1)
你犯了一个简单的错误。在query_string
内使用query
即可开始使用。
{
"query": {
"has_child": {
"type": "Printer",
"query": {
"query_string": {
"default_field": "Name",
"query": "HL-2230"
}
}
}
}
}