一尘不染

ElasticSearch在文档和动态嵌套文档中搜索

elasticsearch

我正在尝试使用以下映射搜索文档:

 {
"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']
                                        )
                                    )
                                )
                            )
                        ))
                    )
                )
            )
        )
    );

阅读 238

收藏
2020-06-22

共1个答案

一尘不染

由于需要解决方案,因此我决定创建一个单独的字符串字段,在其中分解“ kenmerken”字段。目前,此方法可以 正常 工作。

2020-06-22