ElasticSearch6.x常用操作

本次使用版本:6.6.2,操作均在kibana

创建索引

如下创建一个索引名称为ftyj_test,有2个分片,每个分片有2个备份,并静态指定这个索引中的type为blog,以及blog中每篇文章的字段类型,其中type为text的字段参与分词,type为keyword的字段不参与分词,完整检索,如文章作者

分析器隶属于索引,在该索引中创建了自定义分析器两个,一个是粗粒度分词(coarse-grain),采用的是ik分词器中的ik_smart分词策略,意思是少分词,另一个是细粒度分词(fine-grain),采用的是ik分词器中的ik_max_word分词策略,将会最大程度的分出最多的词

PUT ftyj_test
{
    "settings":{
    	"number_of_shards": "2",
		"number_of_replicas": "2",
		"analysis": {
		  "analyzer":{
			  "coarse-grain":{
				"tokenizer":"ik_smart"
			  },
			  "fine-grain":{
				"tokenizer":"ik_max_word"
			  }
		  }
        }
    },
  "mappings": {
	"blog": {
	  "properties": {
		"id": {
		  "type": "integer"
		},
		"title": {
		  "type": "text"
		},
		"publishTime": {
		  "type": "date",
		  "format": "yyyy-MM-dd HH:mm:ss"
		},
		"author": {
		  "type": "keyword"
		},
		"summary": {
		  "type": "text"
		}
	  }
	}
  }
}

插入文档

POST ftyj_test/blog/1
{
  "id":1,
  "title":"GitHub 告急!黑客威胁程序员不交钱就删库!",
  "publishTime":"2019-05-05 17:02:01",
  "author":"CSDN资讯",
  "summary":"5月3日,当中国程序员正愉快地过五一节时,国外程序员突然发现自己GitHub上的代码不翼而飞!自己的GitHub一秒变成悬疑片现场,不仅被黑客攻击删代码了,嚣张的黑客还留下一封勒索信:"
}
POST ftyj_test/blog/2
{
  "id":2,
  "title":"华为员工年薪 200 万!真相让人心酸!",
  "publishTime":"2019-05-04 20:27:01",
  "author":"CSDN资讯",
  "summary":"最近,有华为员工在匿名社交网站上,曝光自己税前年收入91万,再加上股票TUP(Time Unit Plan,直译为“时间单位计划”,即奖励期权计划)和工资,年收入突破200万!"
}

查询文档

  • 查询单个文档
GET ftyj_test/blog/1
  • 查询全部文档
GETftyj_test/blog/_search

修改文档

POST ftyj_test/blog/2/_update
{
  "doc": {
    "title":"华为员工年薪 200 万!这么多吗?"
  }
}

结果:
ElasticSearch6.x常用操作_第1张图片
同时文档的version将会+1,这个在后面的重建文档(reindex)中将会使用

常用操作

查看索引的mapping

GET ftyj_test/_mapping

ElasticSearch6.x常用操作_第2张图片

重建索引

当要备份源头索引(ftyj_test)到目标索引(ftyj)上,旧索引上三条记录以及id,title,更新版本

源头索引ftyj_test(source)

文档id title _version
1 GitHub 告急!黑客威胁程序员不交钱就删库! 2
2 华为员工年薪 200 万! 6
H4HqkGoBWF2bAxMKGO0E 区块链技术可能为业界带来的改变 1

目标索引ftyj(dest)

文档id title _version
1 只需 20 行代码,就能读懂复仇者联盟的人物关系 5
2 2019首届武汉市网络安全技能大赛筹备会顺利召开 4

如果把源头文档reindex到dest,文档1和2会产生冲突
我们使用version type=external来重建索引,执行如下命令

POST _reindex
{
  "conflicts": "proceed",
  "source": {
    "index":"ftyj_test"
  },
  "dest": {
    "index": "ftyj",
    "version_type": "external"
  }
}

执行结果:

目标索引ftyj(dest)

文档id title _version
1 只需 20 行代码,就能读懂复仇者联盟的人物关系 5
2 华为员工年薪 200 万! 6
3 H4HqkGoBWF2bAxMKGO0E 1

可以发现:
1 # 外部版本号小于内部,版本冲突,保留文档和内部版本号5
2 # 外部版本号> 内部,因此覆盖文档 & 保留外部版本号6
H4HqkGoBWF2bAxMKGO0E # 新文档,创建,并保留外部版本号1

尝试字段op_type:

POST _reindex
{
  "conflicts": "proceed",
  "source": {
    "index":"ftyj_test"
  },
  "dest": {
    "index": "ftyj_optype"
    "op_type": "create"
  }
}

结果:
dest新索引ftyj_optype没有的文档全部从源头索引ftyj_test创建,且版本号均为1

尝试字段op_type和version type组合

源头表(ftyj):

文档id title _version
1 只需 20 行代码,就能读懂复仇者联盟的人物关系 5
2 华为员工年薪 200 万! 6
H4HqkGoBWF2bAxMKGO0E 区块链技术可能为业界带来的改变 2

目标表(ftyj_optype2):

文档id title _version
1 GitHub 告急!黑客威胁程序员不交钱就删库! 2
2 华为员工年薪 200 万! 6

执行命令:

POST _reindex
{
  "conflicts": "proceed",
  "source": {
    "index":"ftyj_test"
  },
  "dest": {
    "index": "ftyj_optype2",
    "version_type": "external",
    "op_type": "create"
  }
}

执行结果:
目标索引
目标表(ftyj_optype2):

文档id title _version
1 只需 20 行代码,就能读懂复仇者联盟的人物关系 5
2 华为员工年薪 200 万! 6
H4HqkGoBWF2bAxMKGO0E 区块链技术可能为业界带来的改变 2

结论:只有版本versiontpe起了作用,目标索引没有的第三条数据的版本号并没有因为添加了op_type就变成了1,还是继承了源头表的版本,因此op_type和version_type组合并没有起到作用

你可能感兴趣的:(ElasticSearch6.x常用操作)