I am trying to search in documents with the following mapping:
{
"products":{
"properties":{
"product_id":{
"type":"string"
},
"naam":{
"type":"string"
},
"merk":{
"type":"string"
},
"lijn":{
"type":"string"
},
"sku":{
"type":"string"
},
"omschrijving":{
"type":"string",
"boost":"0.5"
},
"groep":{
"type":"string"
},
"ean":{
"type":"string",
"boost":"2.0"
},
"kenmerken":{
"type":"nested",
"dynamic":true
},
"levertijd_min":{
"type":"string"
},
"levertijd_max":{
"type":"string"
}
}
}
}
I want to search in the "naam", "omschrijving" etc but also in the dynamic mappings of the nested document "kenmerken" I've created a couple of search querys but none of them seem to work.
Should I use a bool or a filter? or combinations of both?
Am I even close?
$params['body'] = array(
'query' => array(
'filtered' => array(
'query' => array(
'match_all' => array()
),
'filter' => array(
'or' => array(
array('term' => array(
'naam' => $_GET['ZOEKTERMEN'],
)),
array('terms' => array(
'omschrijving' => explode(" ", $_GET['ZOEKTERMEN'])
)),
array('terms' => array(
'merk' => explode(" ", $_GET['ZOEKTERMEN'])
)),
array('term' => array(
'product_id' => $_GET['ZOEKTERMEN']
)),
array('nested' => array(
'path' => 'kenmerken',
'query' => array(
'filtered' => array(
'query' => array(
'match_all' => array()
),
'filter' => array(
'term' => array(
'_all' => $_GET['ZOEKTERMEN']
)
)
)
)
))
)
)
)
)
);