专栏首页xingoo, 一个梦想做发明家的程序员Elasticsearch使用REST API实现全文检索

Elasticsearch使用REST API实现全文检索

通过rest api添加检索数据,阅读官方文档可以发现,elasticsearch支持动态映射,但是其中有不少问题,且听慢慢详解。 本文主要讲述三点内容: 1 Elasticsearch常用的rest api 2 Elasticsearch使用bulk命令添加索引数据

ES REST API

  elasticsearch支持通过http请求响应服务,因此通过curl命令,可以发送http请求,并得到json返回内容。

  常用的rest请求包括:

  检查ES集群状态:

curl localhost:9200/_cat/health?v

  检查ES节点状态:

curl localhost:9200/_cat/nodes?v

 查询所有的索引:

curl localhost:9200/_cat/indices?v

创建索引(这种方式在4.1版本下会出现问题,下一小节再说):

curl -XPUT localhost:9200/索引名字/类型/id -d {"name":"xingoo"}

删除索引

curl -XDELETE localhost:9200/索引名字

查询索引:

curl -XGET localhost:9200/索引名字/类型名字/id

ES 使用bulk 添加数据

  动态映射无法添加数据,不要担心!可以使用bulk命令,添加json文件内的数据。

1 定义json数据文件:

{"index":{"_index":"aaa123","_id":1}}
{"name":"xingoo","age":25}
{"index":{"_index":"aaa123","_id":2}}
{"name":"test111","age":31}
{"index":{"_index":"aaa123","_id":3}}
{"name":"test222","age":42}
{"index":{"_index":"aaa123","_id":4}}
{"name":"test333","age":13}

  注意的是,json文件名称随意指定,第一行定义了索引和一些常用字段:

  _index定义了索引的名称,如果没有指定需要在curl命令中添加索引名称字段

  _type定义了索引的类型,如果没有指定需要在curl命令中添加索引类型字段

  _id定义了该行数据的id,如果没有指定,会随机生成一串数字。

2 执行命令

  进入到json文件所在的目录,执行命令

curl localhost:9200/索引名称/索引类型/_bulk?pretty --data-binary @data.json

  注意的是:

  如果json文件中定义了_index和_type,那么这里可以不写变成(即便写了也会按照json文件中的生成)

curl localhost:9200/_bulk?pretty --data-binary @data.json

  类似的,如果按照上面我们定义了_index却没有定义_type,那么索引会是aaa123,类型为我们curl命令中指定的类型。

  可以看到上面虽然指定了索引名称为bbb123,类型为ccc123,但是json文件中指定了索引名称为aaa123。

  最后的索引文件中,索引名称为aaa123,类型为ccc123。

  查询索引状态,可以发现正常了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 快速排序

    算法思想:对于输入的子数组a[p:r],按下面三个步骤: 1 分解:以a[p]为基准元素将a[p:r]分成三段,a[p:q-1],a[q],a[q+1:r],使...

    用户1154259
  • 最大团问题-分支限界

    问题描述:   给定无向图G=(V, E),其中V是非空集合,称为顶点集; E是V中元素构成的无序二元组的集合,称为边集,无向图中的边均是顶点的无序对,无序对...

    用户1154259
  • Elasticsearch集群管理

    ES通过设置【节点的名字】和【集群的名字】,就能自动的组织相同集群名字的节点加入到集群中,并使很多的技术对用户透明化。 如果用户想要管理查看集群的状态,可以...

    用户1154259
  • SpringMVC底层数据传输校验重传方案

    团队的项目正常运行了很久,但近期偶尔会出现BUG。目前观察到的有两种场景:一是大批量提交业务请求,二是生成批量导出文件。出错后,再执行一次就又正常了。

    程序猿讲故事
  • centos7无GUI运行selenium chromedriver 亲测可用!

    yum update , 然后yum install google-chrome-stable

    用户1214487
  • jsoncpp初探

    首先说一下JSON。JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSO...

    Dabelv
  • PHP-ThinkPHP将后台模板与框架做结合

    商品列表 Goods控制器index方法 goods_list.html -> index.html

    cwl_java
  • “快排”笔记

      关于排序,我想没有多少程序员会感觉陌生,信手拈来的可能就有不少:冒泡、选择或者归并等等;可在实际开发中,排序又让许多程序员感到很不熟悉,因为在大多数情况下,...

    用户2615200
  • Flutter Json渐进式解析(下)

    前面几种Json数据格式最外层都是JsonObject,而下面这种,最外层就是一个JsonArray,数据如下所示。

    用户1907613
  • Chrome浏览器开发工具之scheme入口

    一些实验性的功能,可能在未来保留成正式或者被移除,同时也可能会产生不可预期的影响,开发者鼓捣记得备份数据!

    宣言言言

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动