Elasticsearch实战系列(四)--索引数据简述
程序员文章站
2023-12-24 17:16:57
...
一、索引数据的方式
- 直接使用cURL和REST API,发送json文档给ES进行索引,将会返回JSON应答
- 案例
-
curl -H "Content-Type: application/json" -XPUT '192.168.160.128:9200/testindex/testtype/1?pretty' -d '{"name":"zhangsan","age":"25"}'
其中:
-
若不添加-H,则会报错
-
{
"error" : "Content-Type header [application/x-www-form-urlencoded] is not supported",
"status" : 406
}
-
并且索引名称和类型名称不能大写,否则会报错
-
{
"error" : {
"root_cause" : [
{
"type" : "invalid_index_name_exception",
"reason" : "Invalid index name [testIndex], must be lowercase",
"index_uuid" : "_na_",
"index" : "testIndex"
}
],
"type" : "invalid_index_name_exception",
"reason" : "Invalid index name [testIndex], must be lowercase",
"index_uuid" : "_na_",
"index" : "testIndex"
},
"status" : 400
-
- 案例返回内容解析
-
{ "_index" : "testindex", "_type" : "testtype", "_id" : "1", "_version" : 1, "result" : "created", "_shards" : { "total" : 2, "successful" : 1, "failed" : 0 }, "_seq_no" : 0, "_primary_term" : 1 }
其中包含:
-
索引名称、类型名称、文档id以及其它相应信息比如分片信息等
-
- 注:
- 当索引不存在时,ES会自动创建说是因
- 当映射未定义时,ES自动为相应索引创建映射,映射包含字符串字段的定义
- 即默认情况下,我们无须任何配置,即可开始索引。但很多情况下需要我们手动创建索引和映射
- ElasticSearch Head
- 一个单机的HTTP服务器,或是可以从文件系统打开的网页
- 可以发送HTTP请求,也可以作为监控,监控集群的分片信息
- ElasticSearch koaf
- 类似于Head,可以发送HTTP请求以及监控
- 以文件系统的网页运行,或是以ElasticSearch的插件运行
- Marvel
- 商业产品,ElasticSearch的监控解决方案
二、创建索引
- 案例
-
curl -XPUT '192.168.160.128:9200/index1'
- 返回结果
-
{"acknowledged":true,"shards_acknowledged":true,"index":"index1"}
- 为什么需要手动创建索引?
- 当我们需要覆盖ES默认设置的时候,就需要手动创建索引,比如分片的数量
三、创建映射
- 创建映射之前,我们通常需要先查看映射
- 案例
-
curl '192.168.160.128:9200/testindex/_mapping?pretty'
其中:
-
testindex为索引名称
-
- 返回结果
-
{ "testindex" : { "mappings" : { "testtype" : { "properties" : { "age" : { "type" : "text", "fields" : { "keyword" : { "type" : "keyword", "ignore_above" : 256 } } }, "name" : { "type" : "text", "fields" : { "keyword" : { "type" : "keyword", "ignore_above" : 256 } } } } } } } }
其中:
-
类型名称、属性列表、属性选项
-
- 新增索引
- 案例,在我们刚刚创建的索引index1上新增映射
-
curl -H "Content-Type: application/json" -XPOST '192.168.160.128:9200/index1/type/_mapping?pretty' -d '{"type":{"properties":{"name":{"type":"keyword"}}}}'
- 返回结果
-
{ "acknowledged" : true }