ES中存储数据的单位叫做document。每个单一的整体数据都是一个文档对象,类似数据库中表格行数据(rows)。例如:一个文档可以包含一个人的数据,表示一个商品,表示一个网页结构。
文档组成结构文档对象在ES中,都是以json字符串形式存在的,所以一个文档可以根据数据,业务逻辑,由多个key值形成。
{“name”:“逻辑”,“age”:18},这个文档中name,age就是他的Field字段。一个文档是由多个字段组成的。字段类似数据库的列数据。
curl -XPUT http://localhost:9200/indexname/type/docld?pretty -d '{文档json}'
- 类型TYPE
在es中,为了方便管理大量文档数据,形成一个类型type概念,可以通过类型,辨别文档的所属关系,类似于数据库中table
但是在8版本中,type类型的概念将会彻底消失,因为类型的存在并没有极大的方便ES的使用,反而造成查询搜索时由于计算类型导致的延迟,速度慢。从6开始逐渐将类型的使用弱化了,到了7,可以不使用。如果继续使用格式,建议的类型包括_doc_create…
例子
在已有的索引中,新增了一个文档数据,{“name”:“王翠花”,“age”:18}
curl -XPUT http://localhost:9200/index001/_doc/1?pretty -d'{"name":"王翠花","age":18}' -H 'Content-Type:application/json'
- 分片计算规则
当新增一个文档数据时,ES会根据文档的id值叫做hash取余计算,对分片个数N做取余得到结果[0-N-1],从而绑定到分片中,由于分片在创建的索引中不可以修改数量的,所以hash取余适用。
- 删除文档
作为写操作,删除文档,文档元字段version也会自增1
- 获取单个文档
curl -XGET http://localhost:9200/book/IT/1?pretty
- 获取多个文档
要传递三个值index,type,docld,要是用请求体json携带查询多个文档的数据参数
curl -XGET http://192.168.184.131:9200/_mget?pretty -H'Content-Type:application/json' -d '{"docs":[{"_index":"index001","_type":"_doc","_id":"1"},{"_index":"index002","_type":"_doc","_id":"2"}]}'
为实现搜索功能,准备一批数据
批量导入数据bulk
curl -XPUT "localhost:9200/_bulk?pretty" -H 'Content-Type: application/json' -d'
> { "index" : { "_index" : "book", "_type" : "_doc", "_id" : "1" } }
> { "title" : "java编程思想","price":68.8,"author":"王翠花","publish_date":"2012-09-18" }
> { "index" : { "_index" : "book", "_type" : "_doc", "_id" : "2" } }
> { "title" : "java核心技术","price":112.3,"author":"刘富贵","publish_date":"2020-09-18" }
> { "index" : { "_index" : "book", "_type" : "_doc", "_id" : "3" } }
> { "title" : "Hadoop权威指南","price":89.8,"author":"Dogg Cutting","publish_date":"2019-09-18" }
> '



