1.查询不到导致404报错

  在使用get或者search进行查询获取文档的时候,如果没有结果会抛出404的异常。

  

  我们当然不希望抛出异常,这时候就要使用ignore这个参数来忽略报错,ignore可以忽略异常,其值是需要忽略的异常对应的返回码,常见的有400表示索引已存在,404表示索引没找到。

  $params = [

  'index' = 'test_missing',

  'type' = 'test',

  'id' = 1,

  'client' = [ 'ignore' = 404 ] //忽略404报错,兼容查询不到结果的情况

  ];

  echo $client-get($params);

  //这时候如果没有查询结果,将会返回一个found字段

  [found] = bool(false)

  2.search方法不好使(我使用的是5.0版本)

  不知道为啥,原本提供的search会报411错误(还没有错误信息,跟踪源码也没看出个所以然来),再三确保拼接的参数等都没有问题,查了各种资料都没有解决(据说是body不存在引起的),只能改为curl请求http的模式。

  public function search($params)

  {

  $index = 'your index';

  $type = 'your type';

  $url = sprintf('your es url/%s/%s/_search', $index, $type);

  //封装了curl请求方法

  $data = CurlUtil::post($url, null, json_encode($params['body']));

  $data = json_decode($data, true);

  return $data;

  }

  3.get和delete方法的时候,index不能使用通配符 *

  我想获取(删除)一行id为XXX的数据时,使用了index_*去匹配,发现没有结果返回,要指定到index_1才能有结果返回。

  search方法就可以使用通配符。

  4.假如字段默认设定一种类型,则不能插入另一种类型的数据(好像是废话,但是php中很容易出现,弱类型语言。。)

  我在ES中创建了一些数据作为测试,数据内容如下:

  [

  'age' = '123',

  'name' = '456' //注意,这里应该是string类型才对

  ]

  成功插入一行数据,正当我美滋滋把这个创建函数拿去正常流程跑的时候出现问题了。。

  {error:{root_cause:[{type:mapper_parsing_exception,reason:failed to parse [name]}],type:mapper_parsing_exception,reason:failed to parse [name],caused_by:{type:number_format_exception,reason:For input string: \NateHuang\}},status:400}

  类型错误?不能插入string类型的?啥情况?于是我去ES查了下刚刚插入的数据,发现数据去到ES那边变成这样

  [

  'age' = 123,

  'name' = 456 //这里变成数字类型了

  ]

  age被默认设置成数字类型倒还没什么,name这样搞就玩犊子了。。真的坑啊。。

ES使用中遇到的多种坑,以及解决方案的更多相关文章

  1. 安装CentOS 7.4 可能会出现的坑以及解决方案

    安装CentOS 7.4 可能会出现的坑以及解决方案 (解决方法不唯一,如果行不通的话emmmm~~, 百度会啥你会啥~~) 坑.0X01 解决: 退出虚拟机,以管理员权限运行 坑.0X02 解决: ...

  2. 使用appium过程中常遇到的坑以及解决方案

    立志踩遍所有的坑...以下是学appium遇到的坑以及解决方案,方便自己的同时,也方便他人. 一.cmd输入:aapt dump badging C:\Users\XX\Desktop\xxx.apk ...

  3. MyBatis原生批量插入的坑与解决方案!

    前面的文章咱们讲了 MyBatis 批量插入的 3 种方法:循环单次插入.MyBatis Plus 批量插入.MyBatis 原生批量插入,详情请点击<MyBatis 批量插入数据的 3 种方法 ...

  4. Appium学习实践(五)遇到的坑(记录自己工作中遇到的坑以及解决方案,不定时更新)

    1.错误截图,有时候测试用例执行错误的话,相对于复杂的log,一张错误截图也许能更明确哪里出的问题(当然有时,截图+log还是最好了) 坑:本来是想测试用例fail的时候捕获异常来执行截图操作,但是由 ...

  5. 曾经的pc端项目踩到的一些兼容性的坑及其解决方案

    曾经公司pc端项目一直最低兼容到IE7,要求和chrome下浏览效果一致,真心坑坏了我和另外一个小伙伴(另一个小伙伴以前也没处理过兼容问题).不过还好,在这里真心感谢鑫哥博客的详解,从底层原理讲到了具 ...

  6. Ubuntu16.04安装NVIDIA驱动时的一些坑与解决方案

    这几天在新购置的笔记本上部署工作环境,在安装NVIDIA驱动的时候遇到了不少坑,重装了很多次,在Ubuntu论坛以及其他资料源看了很多大牛的分析,最终终于解决了一个又一个问题,过程比较艰辛,所以决定写 ...

  7. 新建VS工程与填坑:解决方案与项目不在同一目录

    A.新建项目->空工程 B.添加依赖库 1.属性->C/C++->附加包含目录 注:添加头文件目录,必须指向子文件夹 2.属性->链接器->常规->附加库目录 注: ...

  8. webpack1.x环境配置与打包基础【附带各种 "坑" 与解决方案!持续更新中...】

    首先介绍传统模块化开发的主流方案: 1.基与CMD的sea.js,玉伯提出的解决方案,据说原来京东团队在使用.用时才定义,就近加载. 2.基于AMD的require.js,之前在用.提前声明与定义.国 ...

  9. VUE 使用中踩过的坑

    vue如今可谓是一匹黑马,github star数已居第一位!前端开发对于vue的使用已经越来越多,它的优点就不做介绍了,本篇是我对vue使用过程中以及对一些社区朋友提问我的问题中做的一些总结,帮助大 ...

随机推荐

  1. APP测试瞎话

    APP测试        一.功能性        1.APP的安装.卸载        2.APP中业务功能            二.性能测试        1.高.中.低端机上运行效果      ...

  2. xshell 没有反应---Xshell按ctrl+s界面无反应的解决办法

    在用Xshell管理远程服务器,特别是在用vi编辑配置文件时,总是习惯的用ctrl+s想要保存文件,然后就悲剧了.xsell就再也没有返应只能关了重新打开.但原来修改的文件算是报废了. 在网上搜索了一 ...

  3. 第19章—后端分页(PageHelper)

    spring boot 系列学习记录:http://www.cnblogs.com/jinxiaohang/p/8111057.html 码云源码地址:https://gitee.com/jinxia ...

  4. Java应用多机器部署定时任务解决方案

    Java多机部署下定时任务的处理方案. 本文转自:http://www.cnblogs.com/xunianchong/p/6958548.html 需求: 有两台服务器同时部署了同一套代码, 代码中 ...

  5. 《Vim实用技巧》阅读笔记 --- 移动及跳转

    1.在对实际行的操作之前加上g,即可对屏幕行进行操作,例如:`gj`表示向下移动一个屏幕行,`g^`表示移动到屏幕行的第一个非空白字符等等 2.Vim有两组面向单词正向及反向移动的命令: w 正向移动 ...

  6. 在Web上运行Linux—js/linux模拟器

    一个叫Fabrice Bellard 的程序员写了一段Javascript在Web浏览器中启动Linux(原网页,我把这个网页iframe在了下面),目前,你只能使用Firefox 4和Chrome ...

  7. PHP连接局域网MYSQL数据库的实例

    PHP连接局域网MYSQL数据库的例子. 代码:                           ?>         第一行ip对应局域网某台主机,关于局域网内mysql连接可参考我的摘抄 ...

  8. APP数据埋点分类方式

    1.数据埋点的重要性     在现实工作中,数据的整体流程为:数据生产-数据采集-数据处理-数据分析和挖掘-数据可视化,其中,数据采集是很重要的一个环节,数据采集得全不全.对不对,直接决定数据广度和质 ...

  9. MySQL之存储引擎(Day39)

    一 什么是存储引擎 mysql中建立的库=====>文件夹 库中建立的表=====>文件 现实生活中我们用来存储数据的文件应该有不同的类型:比如存文本用txt类型,存表格用excel,存图 ...

  10. TP框架基础2

    ---恢复内容开始--- [空操作和空控制器处理] 空操作:就没有指定的操作方法 空控制器:没有指定控制器 http://网址/index.php/Home/User/login http://网址/ ...