我正在尝试使用以下映射搜索文档:
{ "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" } } } }
我想在“ naam”,“ omschrijving”等中进行搜索,但也想在嵌套文档“ kenmerken”的动态映射中进行搜索,因此我创建了两个搜索查询,但它们似乎都不起作用。
我应该使用布尔还是过滤器?或两者结合?
我什至靠近吗?
$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'] ) ) ) ) )) ) ) ) ) );
由于需要解决方案,因此我决定创建一个单独的字符串字段,在其中分解“ kenmerken”字段。目前,此方法可以 正常 工作。