我正在使用使用PHP的REST API通过以下代码从Elastic搜索中获取数据
$params = [
'index' => $search_index,
'type' => $search_type,
'from' => $_POST["from"],
'size' => $_POST["fetch"],
'body' => [
'query' => [
'bool' => [
'must' => [
[ 'match' => [ 'is_validated' => false ] ],
[ 'query_string' => [ 'query' => $search_str, 'default_operator' => 'OR' ] ]
]
]
]
]
];
现在,它运行良好,给了我想要的结果。
从ES返回的数据具有一列“ result_source”,并且具有CNN,BBC或YouTube等预定义的值。
我需要的是,我想以“我只能使用所需的选项来获取结果”的方式过滤“ result_source”列上的结果。就像我想要只具有“ result_source”值的结果“ YouTube”或“ BBC&CNN”或“ CNN或YouTube”等一样。
我已经尝试过“应该”选项,但是它还会返回数据以及其他不需要的值。在从ES提取结果时,不确定如何跳过“ result_source”列的值。
对此将有任何帮助。
谢谢
答案 0 :(得分:0)
解决了!
我正在回答自己的问题,因为我找到了解决方案。也许将来可以帮助别人。
如果有人在Elastic search的字段/列中寻找搜索的解决方案,这是可以做的。
[ 'query_string' => [ 'query' => $search_str.'(result_source:CNN OR result_source:BBC)', 'default_operator' => 'OR' ] ]
“ result_source”实际上是ES的字段/列名,在其上应用了过滤器以返回具有result_source = BBC或result_source = CNN的结果。
这实际上解决了我的问题。