elasticsearch 主键生成策略以及如何指定特定字段为id主键列

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: elasticsearch 主键生成策略以及如何指定特定字段为id主键列

es种一共两种主键生成策略,一个是手动指定和一个是自动生成

1.document的id


1)根据应用情况来说,是否满足是否指定document id的手动指定,一般情况,是从某些其他的系统中,导入一些数据到es时,会采用这种方式,就是使用系统中已有数据的唯一标识,作为es中document的id,举个例子,比如说我们现在在开发一个电商网站,做搜索功能,或者oa系统的员工查询,这个时候,数据首先会在网站的系统中的数据库中,会先有一份,此时就肯定会有一个数据库的primary key(自增长,uuid,业务id),此时就比较适合采用数据在数据库中已有的primary key


语法:


PUT /index/type/id
{
    "xxx":"xxx"
}


例子:


PUT /ecommerce/product/4
{
  "name":"yayale yagao",
  "desc":"gaoxiao meibai",
  "price":100,
  "producer":"yayale producer",
  "tags":[
    "fangzhu","meibai","qingxin"
    ]
}


执行结果:


{
  "_index": "ecommerce",
  "_type": "product",
  "_id": "4",
  "_version": 2,
  "result": "updated",
  "_shards": {
    "total": 2,
    "successful": 1,
    "failed": 0
  },
  "_seq_no": 2,
  "_primary_term": 3
}


2)如果数据主要存储到es中,那么就可以使用document中的自动生成的id


语法:不写id


POST /index/type
{
    "xxx":"xxx"
}


例子:


POST /test_index/salesOrder/
{
  "OrderProductIds":"5"
}


执行结果:生成的自动id是20的guid


{
  "_index": "test_index",
  "_type": "salesOrder",
  "_id": "1l3zmmABEP2XuYqp4PmX",
  "_version": 1,
  "result": "created",
  "_shards": {
    "total": 2,
    "successful": 1,
    "failed": 0
  },
  "_seq_no": 0,
  "_primary_term": 1
}


例子2:


POST /ecommerce/product
{
  "name":"heiren yagao",
  "desc":"gaoxiao meibai",
  "price":100,
  "producer":"heiren producer",
  "tags":[
    "fangzhu","meibai","qingxin"
    ]
}


执行结果:


{
  "_index": "ecommerce",
  "_type": "product",
  "_id": "1131mmABEP2XuYqpoflk",
  "_version": 1,
  "result": "created",
  "_shards": {
    "total": 2,
    "successful": 1,
    "failed": 0
  },
  "_seq_no": 3,
  "_primary_term": 3
}


es在20之后就不执行_id 设置为其他字段了

如下链接只能在低版本使用

elasticsearch指定其他字段为主键_id字段


elasticsearch 文档唯一性由多个字段共同确定(类似联合主键),并发下如何确保唯一


相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
2月前
|
Java API iOS开发
Elasticsearch 字段别名 field-alias
Elasticsearch 字段别名 field-alias
28 0
|
Java Spring
spring data elasticsearch: 设置保活策略|长时间不连接es,报错超时连接
java client长时间没有连接es后,再次调用访问接口,报错连接超时
1340 0
|
2月前
|
API 索引
Elasticsearch Index Shard Allocation 索引分片分配策略
Elasticsearch Index Shard Allocation 索引分片分配策略
77 1
|
2月前
|
iOS开发 索引 MacOS
Elasticsearch 聚合字段aggregate-metric-double
Elasticsearch 聚合字段aggregate-metric-double
22 0
|
3月前
|
Java
elasticsearch在Java中查询指定列的方法
elasticsearch在Java中查询指定列的方法
86 0
|
3月前
|
关系型数据库 MySQL
elasticsearch删除脏数据(根据指定字段删除数据)
elasticsearch删除脏数据(根据指定字段删除数据)
|
5月前
|
存储 自然语言处理 搜索推荐
深入了解Elasticsearch搜索引擎篇:倒排索引、架构设计与优化策略
首先,我们介绍了Elasticsearch(ES)的倒排索引,这是一种用于快速检索的数据结构。其次,我们了解了ES集群的架构,包括主节点、数据节点和协调节点的功能和作用。然后,我们探讨了中文分词器的选择,其中包括IK、HanLP和Jieba等常用的分词工具。接着,我们解释了写入数据和查询数据的工作原理,包括请求的分配和预处理,数据的存储和查询结果的处理过程。最后,我们讨论了ES部署的优化方法,包括调整JVM内存、分片布局和数量、节点身份设计以及配置Ingest节点等方面的策略。
深入了解Elasticsearch搜索引擎篇:倒排索引、架构设计与优化策略
|
6月前
|
监控 容器
Filebeat配置顶级字段Logstash在output输出到Elasticsearch中的使用
Filebeat配置顶级字段Logstash在output输出到Elasticsearch中的使用
143 0
|
8月前
Elasticsearch系列——在使用Kibana查询时,只查询某个字段的值的语法
Elasticsearch系列——在使用Kibana查询时,只查询某个字段的值的语法
|
9月前
|
索引
Elasticsearch 更新指定字段
讲述Elasticsearch更新索引指定字段操作

热门文章

最新文章