我的编程空间,编程开发者的网络收藏夹
学习永远不晚

elasticsearch 简单使用【php版本】

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

elasticsearch 简单使用【php版本】

版本说明

{  "goods": {    "mappings": {      "properties": {        "brand": {          "type": "keyword"        },        "content": {          "type": "text",          "analyzer": "ik_max_word"        },        "id": {          "type": "integer"        },        "sort": {          "type": "integer"        },        "title": {          "type": "text",          "analyzer": "ik_smart"        }      }    }  }}
  • 进行操作时,新建es对象
use Elastic\Elasticsearch\ClientBuilder;$client = ClientBuilder::create() ->setHosts(['localhost:9200']) ->build();

一些查询操作

我们使用es的情景大部分都是查询,下面列举一些常用的操作场景以及对应的代码

获取mapping结构

$response = $client->indices()->getMapping(['index'=>'goods_bak']);

批量批量插入数据

//$count 为从数据库中取的总数,$result为对应的结果集for($i = 0; $i < $count; $i++) {    $add_params['body'][] = [        'index' => [            '_index' => "goods",            '_id' => ($i+1) . ""        ],    ];    $add_params['body'][] = [        'id' => $result[$i][0] + 1,        'title' => $result[$i][1],        'content' => $result[$i][2],        'sort' => $result[$i][3],        'brand' => $result[$i][4],    ];}$responses = $client->bulk($add_params);

删除文档数据

$delete_params = [    'index' => 'goods',    'body' => [        'query' => [            'range' => [                'id' => [                //删除id > 1的文档记录                    'gte' =>1                ]            ]        ]    ]];$responses = $client->deleteByQuery($delete_params);

查询title中包含关键词懒虫的文档记录

// match 会对查询的关键词进行分词,term不会。例如查询华为手机,match会查询title中包含华为或者手机或者华为手机的,term不会对查询的关键词做拆分//不支持对多个字段进行同时查询//es默认返回10条记录,可以用from(偏移量)和size(pagesize)进行分页$params = [    'index' => 'goods',    'body'  => [        'query' => [            'term' => [//            'match' => [                'title' => '懒虫天鹅'            ]        ]    ],    'from' => 0, //分页的位置    'size' => 20 //返回多少条];$response = $client->search($params)->asArray();

模糊查询之wildcard、前缀查询

$params = [    'index' => 'goods',    'body'  => [        'query' => [        //wildcard会对查询条件进行分词,后面可以接* ? 通配符进行匹配        // prefix前缀匹配,匹配到分词中以设置的关键词开头的分词//            'wildcard' => [            'prefix' => [                'brand' => '星'            ]        ]    ],    'from' => 0,    'size' => 20];

范围查询

$params = [    'index' => 'goods',    'body'  => [        'query' => [            'range' => [                'sort' => [                    'gte' => 10,                    'lte' => 100,                ]            ]        ]    ],    'from' => 0,    'size' => 20];

bool查询

//bool查询,多个条件共同成立,有四种选择,must(计算得分,性能较低) filter(过滤条件,不计算得分,性能高),must_not(条件必须不成立),should(条件可以成立)//查询title包含懒虫且brand中含有华为的文档记录$params = [    'index' => 'goods',    'body'  => [        'query'=>[            'bool' => [                'filter' => [                    //多个筛选条件时,每个term是数组形式                    ['term' => ['title' => '懒虫',]],                    ['term' => ['brand' =>'华为',]]                ]            ]        ]    ],    'from' => 0,    'size' => 30];

多个字段不同关键词查询的并集操作

$params = [    'index' => 'goods',    'body'  => [        'query'=>[        //查询title包含懒虫或者brand包含华为的文档记录            'dis_max' => [                'queries' => [                    //多个筛选条件时,每个term是数组形式                    ['term' => ['title' => '懒虫',]],                    ['term' => ['brand' =>'华为',]]                ]            ]        ],        //对结果进行聚合操作        'aggs' => [            //最大得分的记录,返回的结果字段为max_sort            'max_sort' => [                'max' => ['field' => 'sort']            ],            //对查询结果按brand进行聚合汇总,取出前size条记录            'goods_brand_rank' => [                'terms' => [                    'field' => 'brand',                    'size' => 10                ]            ]        ],        //对结果进行高亮显示        'highlight' => [        //这里定义高亮显示的字段以及高亮显示的tag,前端拿到tag后进行处理            'fields' => [                'title' => [                    'pre_tags' => '',                    'post_tags' => '',                ]            ]        ]    ],    'from' => 0,    'size' => 30];

来源地址:https://blog.csdn.net/u010242979/article/details/128107439

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

elasticsearch 简单使用【php版本】

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何使用PHP实现一个简单的博客2.0版本

概述:在互联网时代,博客已经成为一种非常流行的表达方式和记录生活的工具。在开发一个博客应用程序时,PHP是一种常用的服务器端脚本语言,它可以用来处理用户请求、生成动态页面以及与数据库交互等。本文将介绍如何使用PHP来实现一个简单的博客2.0
2023-10-21

怎么用Docker简单部署ElasticSearch

这篇文章主要介绍了怎么用Docker简单部署ElasticSearch的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用Docker简单部署ElasticSearch文章都会有所收获,下面我们一起来看看吧。一
2023-06-05

详解Elasticsearch如何实现简单的脚本排序

Elasticsearch 是位于 Elastic Stack 核心的分布式搜索和分析引擎,可以为所有类型的数据提供近乎实时的搜索和分析。本文主要介绍了Elasticsearch如何实现简单的脚本排序,感兴趣的可以了解一下
2023-01-13

详解spring-boot集成elasticsearch及其简单应用

介绍记录将elasticsearch集成到spring boot的过程,以及一些简单的应用和helper类使用。接入方式使用spring-boot中的spring-data-elasticsearch,可以使用两种内置客户端接入1、节点客户
2023-05-31

PHP中如何使用Elasticsearch

这篇文章将为大家详细讲解有关PHP中如何使用Elasticsearch,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。PHP中使用Elasticsearchcomposer require elastics
2023-06-06

golang版本升级的简单实现步骤

个人感觉Go在众多高级语言中,是在各方面都比较高效的,下面这篇文章主要给大家介绍了关于golang版本升级的简单实现步骤,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
2023-02-13

阿里云服务器升级PHP版本简单易行的方法

阿里云服务器是一个强大的云服务产品,可以帮助用户轻松地搭建和管理自己的网站。但是,随着PHP版本的更新,用户可能需要升级自己的PHP版本以获得更好的性能和安全性。本文将详细地讲解如何在阿里云服务器上升级PHP版本。阿里云服务器升级PHP版本的步骤如下:登录阿里云服务器控制台。在左侧导航栏中,找到并点击“软件中心”
阿里云服务器升级PHP版本简单易行的方法
2023-12-09

简单易懂的numpy版本查看指南

NumPy是Python中一个重要的科学计算包,它提供了许多数学相关的功能,在数据分析、机器学习、深度学习等领域被广泛应用。在 NumPy 中,数组(array)是主要的数据结构,而数组的操作是 NumPy 最核心的功能之一。本文将介绍
简单易懂的numpy版本查看指南
2024-01-19

简单谈谈node.js 版本控制 nvm和 n

今天的话题包括2个部分 1. node.js 下使用 nvm 或者 n 来进行版本控制 2. nvm 安装node.js 版本后,重启终端 node , npm 环境变量失效第一部分 用什么来管理 node.js 版本首先应该欢呼庆祝一下
2022-06-04

Linux系统下多版本php共存的解决方案(超简单)

自php7问世,身为最新版本控的我马上升级体验,但是由于服务器上还有旧程序在运行,只好部署一个php多版本共存环境。 现有环境是lnmp - CentOS 6.7 - nginx 1.10.1 - mariadb-10.0.26 -
2022-06-04

Elasticsearch 如何在 PHP 中使用

引言:Elasticsearch是一个开源的分布式搜索引擎,它能够实现快速、准确地搜索和分析大量数据。它提供了简单且强大的API,使得开发者可以轻松地在各种编程语言中使用Elasticsearch。这篇文章将向你介绍如何在PHP中使用Ela
2023-10-21

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录