一、概述

Elasticsearch官方提供了Composer包可直接引用就好,不过要注意;如果你使用的elastcsearch不是最新的那么我建议你指定合适的版本下载,而不要采用最新的,因为不同版本的es提供的api不同

https://packagist.org/packages/elasticsearch/elasticsearch

除了es外在laravel中也可以使用Scout;不过es中的查找方式功能比scout全,相对来说es可以更好地满足电商系统的需求

composer 命令:

composer require elasticsearch/elasticsearch

配置:

laravel 链接Elasticsearch ;链接只需要配置es的服务器与IP地址就好了

然后修改.env

添加Elasticsearch到laravel的容器中

可以通过tinker 进行测试

app(‘es’)->info();

我们可以查询之前给es配置的索引test中的数据

app('es')->get(['index' => 'test', 'type' => '_doc', 'id' => 1]);

二、使用elasticsearch创建商品的索引搜索

因为在项目中是需要对于商品进行查询的,也就是输入商品相关名称的关键字然后查找对应的数据;

这里还是需要解释es的搜索,es搜索是根据与文档查找的而不是根据与数据库进行查询。

也就是说实际上我们需要先把数据放到es中,也就是存在文档中,然后通过es的对应索引进行查找最终显示

在这个时候那么我们就需要整理一下需要事先存在于es文档中的数据内容及数据的格式。

对于商品的信息来说我们目前最为主要的就是展示商品的goods信息,以及sku,分类信息,属性

设置虚拟字段attr_name

测试之后的结果

及如上就是实际会存在es中的数据内容及其格式

创建商品的索引

curl –XPUT http://localhost:9200/goods/

然后添加文档

curl -H'Content-Type: application/json' -XPUT http://localhost:9200/goods/_mapping/_doc?pretty -d'{

"properties": {

"title": { "type": "text", "analyzer": "ik_smart" },

"long_title": { "type": "text", "analyzer": "ik_smart" },

"category_id": { "type": "integer" },

"category_path" : { "type": "keyword" } ,

"category_name" : { "type": "keyword" } ,

"desc": { "type": "text", "analyzer": "ik_smart" },

"sale": { "type": "integer" },

"sort": { "type": "integer" },

"state": { "type": "integer" },

"pv": { "type": "integer" },

"skus": {

"type": "nested",

"properties": {

"attr_name": { "type": "text", "analyzer": "ik_smart" },

"price": { "type": "scaled_float", "scaling_factor": 100 },

"stock": { "type": "integer" }

}

}

}

}'

"analyzer": "ik_smart" 代表这个字段需要使用 IK 中文分词器分词

还有有一些字段的类型是 keyword,这是字符串类型的一种,这种类型是告诉 Elasticsearch 不需要对这个字段做分词,通常用于邮箱、标签、属性等字段。

skus的字段类型是 nested,代表这个字段是一个复杂对象,由下一级的 properties 字段定义这个对象的字段。我们的『商品 SKU』明明是对象数组,为什么这里可以定义成对象?这是 Elasticsearch 的另外一个特性,每个字段都可以保存多个值,这也是 Elasticsearch 的类型没有数组的原因,因为不需要,每个字段都可以是数组

然后测试

注意需要重新打开tinker

$goods = App\Models\Goods::find(78)->toESArray();

app('es')->index(['id' => $goods['id'], 'index' => 'goods', 'type' => '_doc', 'body' => $goods]);

app('es')->get(['index' => 'goods', 'type' => '_doc', 'id' => 78]);

es中修改某个字段值_搜索引擎之laravel中使用elasticsearch(一)相关推荐

  1. datagrid如何获取一行数据中的某个字段值_或许是全网最全面关于数据库面试题...

    原文: https://www.enmotech.com/web/detail/1/794/1.html 两万字全面论述数据库面试题(上) https://www.enmotech.com/web/d ...

  2. datagrid如何获取一行数据中的某个字段值_使用Mysql 数据库 新手常见问题

    松勤软件测试 坚持教育初心 既问收获也问耕耘 平时用惯了 SQL Server 和 Oracle,基本语法已定型,导致在Mysql数据库操作时经常会报错 1.mysql 中如果字段是字符类型(含中文) ...

  3. mysql比较两张表中两个字段值_如何通过SQL找出2个表里值不同的列的方法

    以下有两个表,他们的结构完全相同,请通过SQL找出值不同的列. Student_1 NAME AGE SCORE peter 26 100 jack 25 96 daniel 26 48 bark 2 ...

  4. list中抽出某一个字段的值_使用LINQ获取List列表中的某个字段值

    使用LINQ获取列表中的某个字段值,下面以获取员工列表中的编号字段为例子. 1.使用Select方法 1 List emplayeeList = GetEmplayeeList(); //获取员工信息 ...

  5. linq 清除一条数据中的某个字段值_B端通用批量数据导入方案设计

    点击上方蓝色字体,关注我 B端通用批量数据导入方案设计 文 | 3548字 估计阅读 | 9分钟 引题 B端产品经常遇到大量数据录入的需求.如春季招聘完成后,给新招的120个员工建立员工档案,并创建员 ...

  6. VUE项目中使用this.$forceUpdate();解决页面v-for中修改item属性值后页面v-if不改变的问题

    VUE项目中使用this.$forceUpdate();解决页面v-for中修改item属性值后页面v-if不改变的问题 参考文章: (1)VUE项目中使用this.$forceUpdate();解决 ...

  7. 学习旧岛小程序 (5) observer 函数中修改属性的值

    不要在一个属性的 observer  函数中修改属性的值 不然会造成内存泄露 错误代码: properties: {/* 期刊号 */index: {type: String,observer: fu ...

  8. GridView控件RowDataBound事件中获取列字段值的几种途径

    前台: <asp:TemplateField HeaderText="充值总额|账号余额"><ItemTemplate><asp:Label ID=& ...

  9. shell中修改=后的值

    shell中修改=后的值 比如某个配置文件myconfig.txt中有初始化一行值如下,我想在另一个脚本中去修改123为456 myconfig.txt export test=123 #!/bin/ ...

最新文章

  1. spring-boot框架dubbo在controlle中r注解@Reference注入service,但是调用方法时候,service报null空指针异常
  2. tia v15 添加项目_作为一名机器人集成项目的电气工程师,你及格吗?
  3. 字节跳动Deep Retrieval召回模型笔记
  4. error C2471和error C1083
  5. gprs模块ftp 远程升级_基于GPRS无线通信技术的冷链监测系统
  6. 一文看懂LR寄存器及 BX LR 指令的两种用途
  7. ORB_SLAM3_一张图说明ORB-SLAM中的ORB特征提取和图像匹配算法流程
  8. 【OpenCV学习笔记】【函数学习】十三(剔除检测到的不符合要求的对象)
  9. iOS gzip解压
  10. 网易云音乐安装完成以后点击图标打不开的解决办法
  11. uniapp中使用微信登录app
  12. 显卡,就是一个男人对自己的交待
  13. MySQL创建用户并授权、删除用户(密码规则)
  14. matlab使用linprog()函数解决简单的线性规划问题
  15. 如何看自己系统是否支持DirectX 9.0c
  16. 生活中的哈哈语录和顺口溜。
  17. 关于C++的数组或者字符串的输入问题
  18. 500人访问的网站服务器配置,500人并发量的服务器配置
  19. 手机GPU性能评估指标
  20. 算法分析与设计实验十二

热门文章

  1. Swift4 - 动态计算UITableView中tableHeaderView的高度 - 获取子控件高度和宽度
  2. WebWorker与WebSocket实现前端消息总线
  3. 工具类静态方法注入dao
  4. ZAM 3D入门教程(5):Lathe编辑器
  5. JS魔法堂:IE5~9的DragDrop API
  6. 《Raspberry Pi用户指南》——2.4 使用外部存储设备
  7. javascript 閉包
  8. python3--装饰器
  9. 3分钟解决MySQL 1032 主从错误
  10. linux shell 和 golang 查询服务器硬件信息