背景
Elasticsearch 作为一款流行的文本检索数据库,2014 年的时候项目中用它实现过文本检索,后来就用的较少了。全年公司的一款产品中使用了 Elasticsearch ,由于我写了一段时间的前端,没关注过后台代码。
近期需要了解下整个项目的后台,所以重新了解了一下 Elasticsearch 的用法,本文汇总操作过程中遇到的异常。
用源码启动
编译好源码后,就可以直接用源码来启动了。首次执行 gradlew run 后,启动成功,关闭了控制台。再次运行该命令时,报错:
重复执行多次
gradlew run 后会报这个错误,解决办法是先执行 gradle clean 再 run。我是通过异常信息猜测的,然后照做,就解决了这个问题。
基本上想明白了,这个 run 之后,Elasticsearch 就以后台进程的方式启动了,即使关闭 DOS 控制台,也能正常访问 Elasticsearch 服务。
查找ES进程
Elasticsearch 进程启动后,访问首页:
curl 命令单引号 VS 双引号
Windows 下使用 curl 命令时,不能用单引号,否则会报错。如果 -d 传递 JSON 数据时,curl 不能接受多行输入,必须用一行输入,JSON 数据的双引号用转义。
创建索引并查看索引类型
windows 下 curl 请求必须用双引号
无文档 ID 报错
使用
_bulk 接口批量插入 JSON 文件的数据时,每一行数据读需要换行,而且第一行指定 ID。
{"_index":{"_id":"xxx"}}
{"name":"zhang","account":"11111","balance":123}