栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Elasticsearch常用操作

Elasticsearch常用操作

1. 索引操作

Elasticsearch是使用Restful风格的http请求访问的,请求参数和返回值都是Json格式的,我们可以使用
kibana发送http请求操作ES。
创建没有结构的索引:路径:ip地址:端口号/索引名
注:在kibana中所有的请求都会省略ip地址:端口号,之后的路径我们省略写ip地址:端口号.
请求方式:PUT
创建没有结构的索引:

POST /索引名
例如:
PUT /product

创建有结构的索引:

PUT /索引名 
{ 
	"mappings":{ 
		"properties":{ 
			"域名1":{ 
				"type":域的类型, 
				"store":是否单独存储, 
				"index":是否创建索引, 
				"analyzer":分词器 
			},
			"域名2":{
			 ... 
			 } 
		} 
	} 
}
例如:
PUT /product1
{
  "mappings": {
    "properties": {
      "id":{
        "type": "integer",
        "store": true,
        "index": true
      },
      "name":{
        "type": "text",
        "store": true,
        "index": true
      },
      "desc":{
        "type": "text",
        "store": true,
        "index": true
      }
    }
  }
}

域的类型:
字符串类型 text
整数类型 long, integer, short, byte
浮点类型 double, float
日期类型 date
布尔类型 boolean
数组类型 array
对象类型 object
不分词的字符串 keyword

index:该域是否创建索引。只有值设置为true,才能根据该域的关键词查询文档。
根据关键词查询文档:

GET /索引名/_search 
{ 
	"query":{ 
		"term":{ 
			搜索字段: 关键字 
		} 
	} 
}

store:是否单独存储。如果设置为true,则该域能够单独查询。
单独查询某个域:

GET /索引名/_search 
{ 
	"stored_fields": ["域名"] 
}

删除索引:

DELETE /索引名
2.文档操作

新增/修改文档
id值不写时自动生成文档id,id和已有id重复时修改文档

POST /索引/_doc/[id值] 
{ 
	"field名":field值 
}
例如:
POST /product/_doc/1
{
  "id":1001,
  "name":"iphone13",
  "desc":"iphone13是最新的苹果手机"
}

根据id查询查询文档

GET /索引/_doc/id值


删除文档
DELETE /索引/_doc/id值

DELETE /product/_doc/1

根据id批量查询文档

GET /索引/_mget 
{ 
	"docs":[ 
		{"_id":id值}, 
		{"_id":id值} 
	] 
}
例如:
GET /product/_mget
{
  "docs":[
    {"_id":1},
    {"_id":2}
    ]
}
查询结果:
{
  "docs" : [
    {
      "_index" : "product",
      "_type" : "_doc",
      "_id" : "1",
      "_version" : 1,
      "_seq_no" : 4,
      "_primary_term" : 1,
      "found" : true,
      "_source" : {
        "id" : 1001,
        "name" : "iphone13",
        "desc" : "iphone13是最新的苹果手机"
      }
    },
    {
      "_index" : "product",
      "_type" : "_doc",
      "_id" : "2",
      "_version" : 1,
      "_seq_no" : 5,
      "_primary_term" : 1,
      "found" : true,
      "_source" : {
        "id" : 1002,
        "name" : "三星S8",
        "desc" : "三星S8很漂亮"
      }
    }
  ]
}

查询所有文档:

GET /索引/_search 
{ 
	"query": {
		 "match_all": {} 
	} 
}
例如:
GET /product/_search
{
  "query": {
    "match_all": {}
  }
}
查询结果:
{
  "took" : 4,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 2,
      "relation" : "eq"
    },
    "max_score" : 1.0,
    "hits" : [
      {
        "_index" : "product",
        "_type" : "_doc",
        "_id" : "1",
        "_score" : 1.0,
        "_source" : {
          "id" : 1001,
          "name" : "iphone13",
          "desc" : "iphone13是最新的苹果手机"
        }
      },
      {
        "_index" : "product",
        "_type" : "_doc",
        "_id" : "2",
        "_score" : 1.0,
        "_source" : {
          "id" : 1002,
          "name" : "三星S8",
          "desc" : "三星S8很漂亮"
        }
      }
    ]
  }
}

修改文档部分字段:

POST /索引/_doc/[id值]/_update 
{ 
	"doc":{ 
		域名:值 
	} 
}
例如:
POST /product/_doc/1/_update
{
  "doc":{
    "desc":"iphone13的性能很棒"
  }
}
查询结果
{
  "_index" : "product",
  "_type" : "_doc",
  "_id" : "1",
  "_version" : 2,
  "_seq_no" : 6,
  "_primary_term" : 1,
  "found" : true,
  "_source" : {
    "id" : 1001,
    "name" : "iphone13",
    "desc" : "iphone13的性能很棒"
  }
}

注意:

  1. ElasticSearch执行删除操作时,ES先标记文档为deleted状态,而不是直接物理删除。当ES存储空
    间不足或工作空闲时,才会执行物理删除操作。
  2. ElasticSearch执行修改操作时,ES 不会真的修改document中的数据,而是标记ES中原有的文档
    为deleted状态,再创建一个新的文档来存储数据。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/613230.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号