Php ElasticSearch在文档和动态嵌套文档中搜索
我正在尝试搜索具有以下映射的文档:Php ElasticSearch在文档和动态嵌套文档中搜索,php,
elasticsearch,Php,
elasticsearch,我正在尝试搜索具有以下映射的文档: { "products":{ "properties":{ "product_id":{ "type":"string" }, "naam":{ "type":"string" }, "merk":{ "type":"string" }, "lijn":{ "type":"string" }, "sku
{
"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”的动态映射
我已经创建了几个搜索查询,但它们似乎都不起作用
我应该使用bool还是过滤器?还是两者兼而有之
我离你很近吗
$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']
)
)
)
)
))
)
)
)
)
);
我不喜欢PHP,但我认为问题在于您使用的是
term
query
要进行搜索,并且您尚未在映射中指定“索引”:“未分析”
有关详细信息,请参阅
您可以将查询从term
更改为match
或match\u phrase
。
或者使用“索引”更改映射:“未分析”
并重新索引数据
我希望这能有所帮助。因为我需要一个解决方案,所以我决定创建一个单独的字符串字段,在其中分解“kenmerken”字段。现在这个很好用 我应该继续使用过滤器吗?只需更改术语/术语以匹配或匹配短语就会抛出错误。Parse Failure[未能解析sourceLooking here似乎嵌套文档中的字符串被复制到根文档的
\u all
字段中。因此,嵌套子句不能满足您的需要。