当前位置: 首页 > 未分类>阅读正文

elasticSearch-php直接生成dsl查询语句

2022.7.13 朱丰华 1032 次 留下评论 651字

在es-php中已经可以得到对象类型的查询DSL

通过把对象转为字符串的形式就可以快速得到 DSL,方便在 kibanna 直接查询。

$esDebug = false;
if($esDebug){  // 调试dsl,可直接在kiBanNa查询
     $debugStr = "POST {$param['index']}/_search".PHP_EOL;//生成调试头
     $debugStr .= preg_replace_callback ('/^ +/m', function ($m) {
       return str_repeat (' ', strlen ($m[0]) / 2);
     }, json_encode ($args, JSON_PRETTY_PRINT|JSON_UNESCAPED_UNICODE)); //生成调试查询语句,指定2个空格缩进
     file_put_contents(BP3_ROOT."/log/0000_es_debug.txt",$debugStr); //输出到txt文本
}

生成调试头:

POST index_name/_search

然后 json_encode 生成请求体。注意 JSON_UNESCAPED_UNICODE 转 utf8,以及 JSON_PRETTY_PRINT 自动美化 json,以及把 json_pretty_print 的默认缩进4个空格指定为 2 个空格。

反之,也可以把字符串的DSL转为 es-php 对象,然后进行查询,先截取请求第一行中的index,然后把后面的内容直接转 array 即可,也就是 json_decode($str,true)。

本篇完,还有疑问?留下评论吧

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注