1、检测集群是否健康。

curl -XGET 'localhost:9200/_cat/health?v'

#后面加一个v表示让输出内容表格显示表头

绿色表示一切正常,黄色表示所有的数据可用但是部分副本还没有分配,红色表示部分数据因为某些原因不可用。

2、查看集群的的节点列表。

curl -XGET 'localhost:9200/_cat/nodes?v'

3、创建索引(方法一)

#创建一个名为demo_v1的索引
> curl -XPUT 'localhost:9200/demo_v1'
{"acknowledged":true,"shards_acknowledged":true}%

默认的number_of_shards=5, number_of_replicas=1,

说明:number_of_shards表示设置一个索引的碎片数量,number_of_replicas表示设置一个索引可被复制的数量。这两个属性的设置直接影响集群中索引和搜索操作的执行。

假设你有足够的机器来持有碎片和复制品,那么可以按如下规则设置这两个值:

1) 拥有更多的碎片可以提升索引执行能力,并允许通过机器分发一个大型的索引;

2) 拥有更多的复制器能够提升搜索执行能力以及集群能力。

对于一个索引来说,number_of_shards只能设置一次,而number_of_replicas可以使用索引更新设置API在任何时候被增加或者减少。 

4、创建索引(方法二)

#创建一个名为demo_v2的索引,并设置number_of_shards=3,number_of_replicas=2
curl -XPUT 'http://localhost:9200/demo_v2/' -d'{
"settings":{
"index":{
"number_of_shards":,
"number_of_replicas":
}
}
}'

5、查看索引

#查看所有索引列表
>curl -XGET 'localhost:9200/_cat/indices?v'

health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open test_v3 MBBLajV1RXynlf9AsRk-nQ 5 1 0 0 260b 260b
yellow open test_v1 nD02rWTqQO-vUaiM8fvolg 5 1 0 0 650b 650b
yellow open demo_v1 TItuViE3Qyu8qqqMMiLkAQ 5 1 0 0 795b 795b
yellow open english Y6Zwxj2cQPijI6NBOmGy9g 5 1 10010130 0 29gb 29gb
yellow open demo_v2 RmYvA8NdSOupXCS5VlXraA 3 2 0 0 390b 390b
yellow open test_v2 HBlEt6zCRomBnQYQrfcpuA 5 1 0 0 260b 260b

#查看索引demo_v1列表
curl -XGET 'localhost:9200/_cat/indices/demo_v1?v'
#查看索引demo_v1,demo_v2列表
curl -XGET 'localhost:9200/_cat/indices/demo_v1,demo_v2?v'

6、给索引设置别名

#给索引demo_v1设置别名demo
curl -XPUT 'localhost:9200/demo_v1/_alias/demo' #给索引demo_v1设置别名demo
curl -XPOST 'localhost:9200/_aliases?pretty' -d'{
"actions" : [
{ "add" : { "index" : "demo_v1", "alias" : "demo"} }
]}' #移除索引demo_v1的别名demo,并给索引demo_v2设置别名demo
curl -XPOST 'localhost:9200/_aliases?pretty' -d'{
"actions" : [
{ "remove" : { "index" : "demo_v1", "alias" : "demo" } },
{ "add" : { "index" : "demo_v2", "alias" : "demo" } }
]}'

命令后面添加pretty表示漂亮的输出,也就是格式化输出

7、查看别名

#查看所有的别名
curl -XGET 'localhost:9200/_alias/*'
{"demo_v1":{"aliases":{"demo":{}}}}%
#查看索引demo_v1的所有别名
curl -XGET 'localhost:9200/demo_v1/_alias/*'
{"demo_v1":{"aliases":{"demo":{}}}}%

8、删除索引

#删除索引test_v1
curl -XDELETE 'localhost:9200/test_v1'
#删除索引test_v2,test_v3
curl -XDELETE 'localhost:9200/test_v2,test_v3'

9、查看索引的设置信息

#查看索引demo_v1的所有设置信息
> curl -XGET 'localhost:9200/demo_v1?pretty'
{
"demo_v1" : {
"aliases" : {
"demo" : { }
},
"mappings" : { },
"settings" : {
"index" : {
"creation_date" : "",
"number_of_shards" : "",
"number_of_replicas" : "",
"uuid" : "TItuViE3Qyu8qqqMMiLkAQ",
"version" : {
"created" : ""
},
"provided_name" : "demo_v1"
}
}
}
} #查看索引demo_v1设置的基础信息
curl -XGET 'localhost:9200/demo_v1/_settings?pretty'
{
"demo_v1" : {
"settings" : {
"index" : {
"creation_date" : "",
"number_of_shards" : "",
"number_of_replicas" : "",
"uuid" : "TItuViE3Qyu8qqqMMiLkAQ",
"version" : {
"created" : ""
},
"provided_name" : "demo_v1"
}
}
}
} #查看索引demo_v1设置的mapping信息
curl -XGET 'localhost:9200/demo_v1/_mapping?pretty'
{
"demo_v1" : {
"mappings" : { }
}
}

9、CRUD数据

#向索引demo_v1中添加几条数据(type=fruit添加3条数据,type=book添加两条数据)
curl -XPOST 'localhost:9200/_bulk?pretty' -d'
{ "index" : { "_index" : "demo_v1", "_type" : "fruit", "_id" : "" }}
{ "name" : "苹果"}
{ "create" : { "_index" : "demo_v1", "_type" : "fruit", "_id" : "" }}
{ "name" : "香蕉"}
{ "index" : { "_index" : "demo_v1", "_type" : "fruit", "_id" : "" }}
{ "name" : "西瓜"}
{ "index" : { "_index" : "demo_v1", "_type" : "book", "_id" : "" }}
{ "name" : "深入浅出node.js" }
{ "create" : { "_index" : "demo_v1", "_type" : "book", "_id" : "" }}
{ "name" : "你不知道的javascript" }
'
#查看索引demo_v1下的数据
curl -XGET 'localhost:9200/demo_v1/_search?pretty'
#查看索引demo_v1类型fruit下的数据
curl -XGET 'localhost:9200/demo_v1/fruit/_search?pretty'
#查看索引demo_v1类型fruit,类型book下的数据
curl -XGET 'localhost:9200/demo_v1/fruit,book/_search?pretty'
#用别名查看demo_v1下的数据
curl -XGET 'localhost:9200/demo/_search?pretty' #删除索引=demo_v1类型=fruit下面id=2的数据
curl -XPOST 'localhost:9200/_bulk?pretty' -d'
{ "delete" : { "_index" : "demo_v1", "_type" : "fruit", "_id" : "" }}'
或者操作
curl -XDELETE 'localhost:9200/demo_v1/fruit/2' #修改索引demo_v1类型fruit下面id=3的数据name字段
curl -XPOST 'localhost:9200/_bulk?pretty' -d'
{ "update" : {"_id" : "", "_type":"fruit", "_index": "demo_v1"}}
{ "doc" : {"name":"草莓"}}
'

10、自定义分词器

#如果索引demo_v6没有创建,可以直接创建并设置逗号分词器
curl -XPUT 'localhost:9200/demo_v6' -d'{
"settings": {
"index": {
"analysis": {
"analyzer": {
"douhao_analyzer": {
"pattern": ",",
"type": "pattern"
}
}
},
"number_of_shards": "",
"number_of_replicas": ""
}
}
}' #如果索引demo_v1已经存在,先关索引,再设置逗号分词器,然后打开索引
curl -XPOST 'localhost:9200/omo_v1/_close'
curl -XPUT 'localhost:9200/demo_v1/_settings' -d'{"analysis":
{
"analyzer":
{
"douhao_analyzer":
{
"type":"pattern",
"pattern":","
}
}
}}'
curl -XPOST 'localhost:9200/omo_v1/_open'

11、给索引设置mapping

#查看索引demo_v1的mapping设置( 没有手动设置的话采用系统默认设置,分词器默认standard分词(标准分词器))
curl -XGET 'localhost:9200/demo_v1/_mapping?pretty'
{
"demo_v1" : {
"mappings" : {
"book" : {
"properties" : {
"name" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" :
}
}
}
}
},
"fruit" : {
"properties" : {
"name" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" :
}
}
}
}
}
}
}
} #给索引demo_v1的mapping设置中fruit新增一个字段tag
curl -XPOST 'localhost:9200/demo_v1/fruit/_mapping?pretty' -d '{
"fruit": {
"properties": {
"tag":{
"type":"text"
}
}
}
}'

注意:已经设置好的mapping可以新增字段,但是对已经设置的字段是不能修改的。因为Elasticsearch底层使用的是lucene库,修改以后索引和搜索要涉及分词方式等操作,所以不允许修改。

如果一个mapping设置过了,想要修改type或analyzer,通常的做法是新建一个索引,重新设置mapping,再把数据同步过来。

具体做法参见下一篇文章 《学习用Node.js和Elasticsearch构建搜索引擎(7):零停机时间更新索引配置或迁移索引》

学习用Node.js和Elasticsearch构建搜索引擎(6):实际项目中常用命令使用记录的更多相关文章

  1. 学习用Node.js和Elasticsearch构建搜索引擎(1):了解并运行Elasticsearch

    1.学习Elasticsearch概述. 了解Elasticsearch是什么?能做什么?可以查一下elasticsearch.lucene等的相关介绍,另外也可以查查资料比较一下其它的搜索引擎sph ...

  2. 学习用Node.js和Elasticsearch构建搜索引擎(4): 构建Elasticsearch搜索引擎

    一.目标 使用node搭建一个知识库检索系统,要求词条平均检索速度必须在1s以内. 二.思路. 本人思路如下图. 橙色部分为我们要开发的内容, ES服务搭建(暂时用单节点测试,集群搭建以后再说), 三 ...

  3. 学习用Node.js和Elasticsearch构建搜索引擎(7):零停机时间更新索引配置或迁移索引

    上一篇说到如果一个索引的mapping设置过了,想要修改type或analyzer,通常的做法是新建一个索引,重新设置mapping,再把数据同步过来. 那么如何实现零停机时间更新索引配置或迁移索引? ...

  4. 学习用Node.js和Elasticsearch构建搜索引擎(3):使用curl命令操作elasticsearch

    使用Elasticsearch不免要提到curl工具,curl是利用URL语法在命令行方式下工作的开源文件传输工具.官网地址:https://curl.haxx.se/ 因为elasticsearch ...

  5. 学习用Node.js和Elasticsearch构建搜索引擎(2):一些检索命令

    1.Elasticsearch搜索数据有两种方式. 一种方式是通过REST请求URI,发送搜索参数: 另一种是通过REST请求体,发送搜索参数.而请求体允许你包含更容易表达和可阅读的JSON格式.这个 ...

  6. 学习用Node.js和Elasticsearch构建搜索引擎(5):mac本机部署canal

    1.背景介绍 最近做的一个项目需要快速检索数据,经过商讨后采用了ElasticSearch作为快速检索数据引擎,但是数据如何同步到ES中是个问题,我们最开始计划了定时任务.mysql trigger等 ...

  7. 如何用 Node.js 和 Elasticsearch 构建搜索引擎

    Elasticsearch 是一款开源的搜索引擎,由于其高性能和分布式系统架构而备受关注.本文将讨论其关键特性,并手把手教你如何用它创建 Node.js 搜索引擎. Elasticsearch 概述 ...

  8. 学习用node.js建立一个简单的web服务器

    一.建立简单的Web服务器涉及到Node.js的一些基本知识点: 1.请求模块 在Node.js中,系统提供了许多有用的模块(当然你也可以用JavaScript编写自己的模块,以后的章节我们将详细讲解 ...

  9. ElasticSearch搜索引擎在JavaWeb项目中的应用

    近几篇ElasticSearch系列: 1.阿里云服务器Linux系统安装配置ElasticSearch搜索引擎 2.Linux系统中ElasticSearch搜索引擎安装配置Head插件 3.Ela ...

随机推荐

  1. 国内使用google搜索引擎

    百度搜索 "谷歌访问助手",点击第一个搜索结果,如下: 或者直接点击链接:http://www.ggfwzs.com/  ,然后点击相应的浏览器下载谷歌访问助手,解压,将解压好的谷 ...

  2. 项目总结一:情感分类项目(emojify)

    一.Emojifier-V1 模型 1. 模型 (1)前向传播过程: (2)损失函数:计算the cross-entropy cost (3)反向传播过程:计算dW,db dz = a - Y_oh[ ...

  3. C++版 - 剑指offer 面试题63:二叉搜索树的第k个结点(二叉树中序遍历的应用) 题解

    面试题 63:二叉搜索树的第k个结点 题目:给定一颗二叉搜索树,请找出其中的第k大的结点.例如, 5 / \ 3 7 /\ /\ 2 4 6 8 (见下面的图1) 中,按结点数值大小顺序第三个结点的值 ...

  4. shell运算符与流程控制-2

    1.shell运算符 1.1.算数运算符 原生的bash不支持算数运算,可以通过其它方式实现例如expr. `expr a + b` #a b为数字,和运算符之间要有空格 #``不是单引号,为键盘上E ...

  5. Mybatis 缓存分析

    其实本来不想专门的写一篇关于mybatis缓存的博客的.在之前的博客中已经大致的把mybatis的整体流程讲了一遍.只要按照步骤一步步的点进去,关于缓存的代码很容易就能发现.但是今天在看代码的时候突然 ...

  6. Linux文件系统及文件属性

    一.Linux文件系统 1.穿件文件系统 Linux中当磁盘格式化创建文件系统时,会创建一定数量的节点索引Inode以及一定数量的块block,其中inode具有存储文件属性以及指向文件实体block ...

  7. web进修之—Hibernate HQL(7)

    概述 HQL是Hibernate封装成为面向对象的数据库查询语言,具有如下特点: 面向对象,包括继承.多态和关联之类的概念,SQL操作的数据库的表,HQL更像是操作对象 大小写敏感,只对对象和属性敏感 ...

  8. 一览js模块化:从CommonJS到ES6

    本文由云+社区发表 模块化是指把一个复杂的系统分解到一个一个的模块. 模块化开发的优点: (1)代码复用,让我们更方便地进行代码管理.同时也便于后面代码的修改和维护. (2)一个单独的文件就是一个模块 ...

  9. sshfs基于ssh挂载远程目录

    为了像本地一样访问远程主机上的目录,通常我们会在远程主机上使用nfs来导出目录,并在本地主机上mount这个nfs文件系统.如果是windows系统,则使用cifs或samba的方式来访问. 但可能我 ...

  10. c# dllimport 调用函数,参数乱码

    [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] [return: MarshalA ...