惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

雷峰网
雷峰网
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
T
Tailwind CSS Blog
F
Fortinet All Blogs
Microsoft Azure Blog
Microsoft Azure Blog
Jina AI
Jina AI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
N
Netflix TechBlog - Medium
B
Blog RSS Feed
Blog — PlanetScale
Blog — PlanetScale
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
The Blog of Author Tim Ferriss
D
Docker
博客园 - 聂微东
博客园 - 【当耐特】
博客园 - 三生石上(FineUI控件)
L
LangChain Blog
量子位
宝玉的分享
宝玉的分享
博客园 - 司徒正美
The Cloudflare Blog
G
Google Developers Blog
Microsoft Security Blog
Microsoft Security Blog
腾讯CDC

博客园 - 赵瑛

如何把一个js的代码变成一个.min.js的文件 thinkphp8有一个木马文件链接 thinkphp 可以居中的分页css样式 thinkphp8无法显示验证码的原因之一 php将内容转为word vue点击复制 vue简单分页 vue无限加载 mpdf增加字体并进行使用 jquery导出word css清除浮动最好的方法 Elasticsearch同时实现and与or查询 Elasticsearch查询指定字段是否有重复数据 查询并删除Elasticsearch库中指定字段重复的数据 elasticsearch进行and,or多条件组合查询 elasticsearch中的and和or php FTP操作类( 拷贝、移动、删除文件/创建目录 ) mysql重置自增id js 双指放大、拖动图片
php操作elasticsearch数据库的方法
赵瑛 · 2022-09-22 · via 博客园 - 赵瑛

 =====为本人原创,转载请注明出处! =====

一、命令

/**
 *      _search                     查询命令
 *      _update_by_query            更新命令
 *      _delete_by_query            删除命令
*/

二、指定字段查询

$url = 'http://192.168.10.2:9200/article/_search';
$data = [
    'query'=>['bool'=>['must'=>[['term'=>['article_id'=>'3842959']]]]]
];
$post_data = json_encode($data);
$relust = curl_json($url,$post_data);
print_r($relust);

三、指定类别的关键词查询

        $keywords = '韩晓玲';
        $cateid = 128;

        $a = json_decode('{}');

        $url = 'http://192.168.0.1/article/_search';

        if($ent_id){
            $data['query']['bool']['must'][0]['term']['cateid'] = $cateid;
        }

        $data['query']['bool']['should'][0]['match_phrase']['title'] = $keywords;
        $data['query']['bool']['should'][1]['match_phrase']['content'] = $keywords;

        $data['from'] = 0;//从第几页开始获取
        $data['size'] = 10;//每页显示多少条
        $data['sort'] = [];//排序

        //下面是搜索关键词高亮设置
        $a = json_decode('{}');
        $data['highlight']['fields'][0]['title'] = $a;
        $data['highlight']['fields'][1]['content'] = $a;
        $data['highlight']['pre_tags'] = '<font color="red">';
        $data['highlight']['post_tags'] = '</font>';
        $data['highlight']['fragment_size'] = 20;

        $post_data = json_encode($data,JSON_UNESCAPED_UNICODE);
        $relust = curl_post($url,$post_data);
        print_r($relust);

四、批量展示

批量查询20条数据,并以article_id字段进行倒序方式来排序展示。

        $url = 'http://192.168.10.2:9200/article/_search';
        $data = [
            'query'=>['bool'=>['must'=>[]]],'size'=>20,'sort'=>['article_id'=>'desc']
        ];
        $post_data = json_encode($data);
        $relust = curl_json($url,$post_data);
        print_r($relust);

五、更新

$url = 'http://192.168.10.2:9200/article/_update_by_query';
$data = [
    'query'=>['bool'=>['must'=>[['term'=>['article_id'=>'3842959']]]]],
    'script'=>['inline'=>"ctx._source['article_is_show'] = 0"]
];
$post_data = json_encode($data);
$relust = curl_json($url,$post_data);
print_r($relust);
exit;

 如果需要同时更新多个字段,那就加分号隔开ctx._source['article_title'],记住字符类型的要添加上引号,数字类型的不要添加引号,如下:

$url = 'http://192.168.10.2:9200/article/_update_by_query';
$data = [
    'query'=>['bool'=>['must'=>[['term'=>['article_id'=>'3842959']]]]],
    'script'=>['inline'=>"ctx._source['article_title'] = '".$title."';ctx._source['article_is_show'] = 0;"]
];
$post_data = json_encode($data);
$relust = curl_json($url,$post_data);
print_r($relust);
exit;

六、删除

$url = 'http://192.168.10.2:9200/article/_delete_by_query';
$data = [
    'query'=>['bool'=>['must'=>[['term'=>['article_id'=>'3842959']]]]]
];
$post_data = json_encode($data);
$relust = curl_json($url,$post_data);
print_r($relust);
exit;

具体$data中的命令,请参阅elasticsearch文档

七、curl

function curl_post($url,$data)
{
    $curl = curl_init();
    curl_setopt($curl,CURLOPT_URL,$url);
    curl_setopt($curl, CURLOPT_HTTPHEADER,array(
        'Content-Type: application/json; charset=utf-8',
        'Cache-Control: no-cache',
        'Pragma: no-cache'
    ));
    curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
    curl_setopt($curl,CURLOPT_POST,true);
    curl_setopt($curl,CURLOPT_POSTFIELDS,$data);
    $result = curl_exec($curl);
    curl_close($curl);
    $datalist = json_decode($result,true);
    return $datalist;
}