es
快速检查集群的健康状况
GET /_cat/health?v
green:每个索引的primary shard和replica shard都是active状态的
yellow:每个索引的primary shard都是active状态的,但是部分replica shard不是active状态,处于不可用的状态
red:不是所有索引的primary shard都是active状态的,部分索引有数据丢失了
索引
直接put数据 PUT index/_doc/1,es会自动生成索引,并建立动态映射dynamic mapping。在生产上,我们需要自己手动建立索引和映射,为了更好地管理索引。就像数据库的建表语句一样。
快速查看集群中有哪些索引
GET /_cat/indices?v
创建索引:
PUT /demo_index?pretty
#详细语法
PUT /index
{
    "settings": { ... any settings ... },
    "mappings": {
       "properties" : {
            "field1" : { "type" : "text" }
        }
    },
    #索引别名
    "aliases": {
    	"default_index": {}
  } 
}
查询索引
GET /my_index/_mapping
GET /my_index/_setting
修改索引
PUT /my_index/_settings
{
    "index" : {
    	#修改副本数
        "number_of_replicas" : 2
    }
}
删除索引:
DELETE /demo_index?pretty
#删除指定索引
DELETE /my_index
#删除多个索引
DELETE /index_one,index_two
#删除多个索引
DELETE /index_*
#删除全部索引
DELETE /_all
为了安全起见,防止恶意删除索引,删除时必须指定索引名:
elasticsearch.yml
action.destructive_requires_name: true
新增文档
语法 PUT /index/type/id
PUT /book/_doc/1
{
"name": "Bootstrap开发",
"description": "Bootstrap是由Twitter推出的一个前台页面开发css框架,是一个非常流行的开发框架,此框架集成了多种页面效果。此开发框架包含了大量的CSS、JS程序代码,可以帮助开发者(尤其是不擅长css页面开发的程序人员)轻松的实现一个css,不受浏览器限制的精美界面css效果。",
"studymodel": "201002",
"price":38.6,
"timestamp":"2019-08-25 19:11:35",
"pic":"group1/M00/00/00/wKhlQFs6RCeAY0pHAAJx5ZjNDEM428.jpg",
"tags": [ "bootstrap", "dev"]
}
新增文档自动生成ID:
长度为20个字符,URL安全,base64编码,GUID,分布式生成不冲突
# 语法:POST /index/_doc
POST /test_index/_doc
{
  "test_field": "test1"
}
强制新增文档
为防止覆盖原有数据,我们在新增时,设置为强制创建,不会覆盖原有文档。如果原文档存在则返回失败
#语法 PUT /index/ _doc/id/_create
PUT /test_index/_doc/1/_create
{
  "test_field": "test"
}
修改覆盖文档
语法  PUT /index/type/id:替换操作是整体覆盖,要带上所有信息。
实质:旧文档的内容不会立即删除,只是标记为deleted。适当的时机,集群会将这些文档删除。
PUT /book/_doc/1
{
    "name": "Bootstrap开发教程1",
    "description": "Bootstrap是由Twitter推出的一个前台页面开发css框架",
    "studymodel": "201002",
    "price":38.6,
    "timestamp":"2019-08-25 19:11:35",
    "pic":"group1/M00/00/00/wKhlQFs6RCeAY0pHAAJx5ZjNDEM428.jpg",
    "tags": [ "bootstrap", "开发"]
}
修改更新文档
只修改变动字段
#语法 POST /{index}/type/{id}/_update   或者  POST /{index}/_update/{id}
POST /book/_update/1/ 
{
  "doc": {
   "name": " Bootstrap开发教程高级"
  }
}
检索文档
语法:GET /index/type/id
GET /book/_doc/1
检索文档指定字段
GET  /book/_doc/1?__source_includes=name,price    
mget 批量查询:
GET /_mget
{
   "docs" : [
      {
         "_index" : "test_index",
         "_id" :    2
      },
      {
         "_index" : "test_index",
         "_id" :    3
      }
   ]
}
#同一索引下批量查询:
GET /test_index/_mget
{
   "docs" : [
      {
         "_id" :    2
      },
      {
         "_id" :    3
      }
   ]
}
搜索写法
post /test_index/_doc/_search
{
    "query": {
        "ids" : {
            "values" : ["1", "7"]
        }
    }
}
GET /indexname/_search?q=2019        #0条结果             
GET /indexname/_search?q=2019-01-01           #1条结果
GET /indexname/_search?q=fieldname:2019-01-01     #1条结果
GET /indexname/_search?q=fieldname:2019          #0 条结果
批量增删改 bulk
#语法
POST /_bulk
{"action": {"metadata"}}
{"data"}
如下操作,删除5,新增14,修改2。
POST /_bulk
{ "delete": { "_index": "test_index",  "_id": "5" }} 
{ "create": { "_index": "test_index",  "_id": "14" }}
{ "test_field": "test14" }
{ "update": { "_index": "test_index",  "_id": "2"} }
{ "doc" : {"test_field" : "bulk test"} }
映射
查询索引映射
GET  /indexname/_mapping/
查询所有索引的映射
GET /_mapping
创建映射
创建索引后,应该立即手动创建映射
PUT book/_mapping
{
	"properties": {
           "name": {
                  "type": "text"
            },
           "description": {
              "type": "text",
              #指定索引分词器
              "analyzer":"english", 
              #定义搜索时使用的分词器
              "search_analyzer":"english" 
           },
           "pic":{
             "type":"text",
             #指定是否索引,默认为index=true,即要进行索引,只有进行索引才可以从索引库搜索到。
             #但是也有一些内容不需要索引,比如:商品图片地址只被用来展示图片,不进行搜索图片,此时可以将index设置为false。
             "index":false   
           },
           "studymodel":{
             "type":"text"
           }
    }
}
keyword关键字字段
目前已经取代了"index": false。上边介绍的text文本字段在映射时要设置分词器,keyword字段为关键字字段,通常搜索keyword是按照整体搜索,所以创建keyword字段的索引时是不进行分词的,比如:邮政编码、手机号码、身份证等。keyword字段通常用于过虑、排序、聚合等。
修改映射
只能创建index时手动建立mapping,或者新增field mapping,但是不能update field mapping。
因为已有数据按照映射早已分词存储好。如果修改,那这些存量数据怎么办。
删除映射
通过删除索引来删除映射。
模板
创建模板
PUT _template/hhlink_consumer_template
{
 "order": 0,
 "index_patterns": [
 	 #指定索引匹配规则
      "hhlink-consumer-log*"
 ],
 "settings" : {
      "index" : {
        "mapping" : {
          #设置单个索引最大字段数2000
          "total_fields" : {
            "limit" : "2000"
          }
        },
        #分片数
        "number_of_shards" : "3",
        #副本数
        "number_of_replicas" : "0"
      }
    },
#映射
"mappings" : {
      "fluentd-aggregator" : {
        "properties" : {
          "@timestamp" : {
            "type" : "date"
          },
          "AnalyzedData" : {
            "properties" : {
              "addr" : {
                "type" : "text",
                "fields" : {
                  "keyword" : {
                    "type" : "keyword",
                    "ignore_above" : 256
                  }
                }
              }
            }
          },
          "errMsg" : {
            "type" : "text",
            "fields" : {
              "keyword" : {
                "type" : "keyword",
                "ignore_above" : 256
              }
            }
          }
        }
      }
    }
 }
查看模板
GET /_template/模板名称
GET /_template/模板名称一部分*
GET /_template/模板名称1,模板名称2
#查看全部模板
GET /_template
删除模板
DELETE /_template/模板名称
判断模板是否存在
HEAD /_template/模板名称
kibana
Kibana---Management--- Create index pattern--- Index pattern填索引名,下一步,再点击discover就可看到数据。
bug
es入库失败,报错Limit of total fields [1000] in index [issue] has been exceeded
es默认索引字段数限制为1000,超出则入库失败,可手动修改限制:
PUT my_index/_settings
{
"index.mapping.total_fields.limit": 2000
}  
本文来自博客园,作者:bgtong,转载请注明原文链接:https://www.cnblogs.com/bgtong/p/16310108.html
 
                    
                     
                    
                 
                    
                 
         
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号