ES-识别文档

为了识别同一个索引中的某篇文档,ES使用_uid中的文档类型和ID结合体。_uid字段是由_id和_type字段组成,当搜索或者检索文档的时候总是能获得这两项信息。

FengZhendeMacBook-Pro:cv FengZhen$ curl -XGET 'localhost:9200/music/album/5?pretty&fields'
{
"_index" : "music",
"_type" : "album",
"_id" : "",
"_version" : ,
"found" : true
}

由于所有的文档都位于同一个Lucene的索引中,ES内部使用_uid来唯一确定文档的身份。类型和ID的分离是一种抽象,通过类型的区分使得针对不同结构的运作更为容易。正是因为如此,_id通常从_uid抽取出来,但是_type必须单独索引,这样当搜索特定类型时,系统才能轻松地根据类型来过滤文档。

_uid:
  是否存储:yes
  是否索引:yes
  描述:用于识别整个索引中的某篇文档
_id:
  是否存储:no
  是否索引:no
  描述:该字段没有被索引,也没有被存储。如果搜索他,实际上是用的是_uid。当获得了结果,也同样是从_uid抽取内容。
_type:
  是否存储:no
  是否索引:no_analyzed
  描述:该字段是被索引的,并且生成一个单一的词条。ES用它来过滤指定类型的文档。也可以搜索这个字段

1. 为文档提供ID

(1) 手动指定

目前为止,多数是通过URI的一部分来手动提供ID。例如,为了索引ID为1st的文档,运行类似下面的命令

FengZhendeMacBook-Pro:cv FengZhen$ curl -XPUT 'localhost:9200/get-together/manual_id/1st?pretty' -d '{
> "name":"Elasticsearch Denver"
> }'
{
"_index" : "get-together",
"_type" : "manual_id",
"_id" : "1st",
"_version" : ,
"_shards" : {
"total" : ,
"successful" : ,
"failed" :
},
"created" : true
}

(2) ES自动生成

可以依靠ES来生成唯一的ID。如果尚无唯一的ID,或者没有必要通过某种特定的属性来识别文档,这一点就很有帮助。通常而言,当索引应用程序的日志时,会这么做:这些数据没有唯一的属性来识别它们,而且它们也从不会被更新。
为了让ES生成ID,使用HTTP POST请求并省去ID

FengZhendeMacBook-Pro:cv FengZhen$ curl -XPOST 'localhost:9200/logs/auto_id/?pretty' -d '{
> "message":"test es auto id"
> }'
{
"_index" : "logs",
"_type" : "auto_id",
"_id" : "AWut3pFctSp-KrHOt_--",
"_version" : ,
"_shards" : {
"total" : ,
"successful" : ,
"failed" :
},
"created" : true
}

可以看到自动回复中的ID:AWut3pFctSp-KrHOt_--

2. 在文档中存储索引名称

除了ID和类型,为了让ES在文档中存储索引的名称,可以使用_index字段。和_id、_type一样,可以在搜索或者是GET请求的结果中看到_index,它也不是来源于字段的内容。
ES知道每个结果来自哪个索引,所以它可以展示_index的值

FengZhendeMacBook-Pro:cv FengZhen$ curl 'localhost:9200/_search?q=_index:get-together&pretty'

{

"took" : 3,

"timed_out" : false,

"_shards" : {

"total" : 25,

"successful" : 25,

"failed" : 0

},

"hits" : {

"total" : 1,

"max_score" : 1.0,

"hits" : [ {

"_index" : "get-together",

"_type" : "manual_id",

"_id" : "1st",

"_score" : 1.0,

"_source" : {

"name" : "Elasticsearch Denver"

}

} ]

}

}

Elasticsearch-如何识别一篇文档的更多相关文章

  1. R︱Softmax Regression建模 (MNIST 手写体识别和文档多分类应用)

    本文转载自经管之家论坛, R语言中的Softmax Regression建模 (MNIST 手写体识别和文档多分类应用) R中的softmaxreg包,发自2016-09-09,链接:https:// ...

  2. Elasticsearch 7.x文档基本操作(CRUD)

    官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/docs.html 1.添加文档 1.1.指定文档ID PUT ...

  3. elasticsearch 基础 —— 分布式文档存储原理

    路由一个文档到一个分片中 当索引一个文档的时候,文档会被存储到一个主分片中. Elasticsearch 如何知道一个文档应该存放到哪个分片中呢?当我们创建文档时,它如何决定这个文档应当被存储在分片  ...

  4. 关于Elasticsearch单个索引文档最大数量问题

    因为ElasticSearch是一个基于Lucene的搜索服务器.Lucene的索引有个难以克服的限制,导致Elasticsearch的单个分片存在最大文档数量限制,一个索引分片的最大文档数量是20亿 ...

  5. ElasticSearch核心概念和文档的CRUD

    目录 1. 基本概念 1.1 Node 与 Cluster 1.2 Index 1.3 Document 1.4 Type(将在ES6.0移除) 2. 数据的增删改查 2.1 添加数据 2.2 查询数 ...

  6. elasticsearch 官方监控文档 老版但很有用

    https://zhaoyanblog.com/page/1?s=elasticsearch 监控每个节点(jvm部分) 操作系统和进程部分 操作系统和进程部分的含义是很清楚的,这里不会描述的很详细. ...

  7. Elasticsearch操作Document文档

    1.利用客户端操作Document文档数据        1.1 创建一个文档(创建数据的过程,向表中去添加数据)            请求方式:Post    请求地址:es所在IP:9200/索 ...

  8. 【Elasticsearch学习】文档搜索全过程

    在ES执行分布式搜索时,分布式搜索操作需要分散到所有相关分片,若一个索引有3个主分片,每个主分片有一个副本分片,那么搜索请求会在这6个分片中随机选择3个分片,这3个分片有可能是主分片也可能是副本分片, ...

  9. 5.ElasticSearch系列之文档的基本操作

    1. 文档写入 # create document. 自动生成 _id POST users/_doc { "user" : "shenjian", " ...

随机推荐

  1. BZOJ 1444: [Jsoi2009]有趣的游戏 AC自动机+概率与期望+矩阵乘法

    这道题还比较友好~首先,构建出来 $AC$ 自动机,那么我们要求的就是从 $0$ 号点走无限次走到一个终止节点的概率. 考虑构建转移矩阵 $M,$ $M_{i,j}$ 表示节点 $i$ 转移到节点 $ ...

  2. Java进阶知识07 Hibernate一对一双向外键关联(Annotation+XML实现)

    1.Annotation 注解版 1.1.创建Husband类和Wife类 package com.shore.model; import javax.persistence.Entity; impo ...

  3. MessagePack Java Jackson 序列化和反序列化 POJO 为 MessagePack 的数组类型用来与 msgpack-java:0.6 保持兼容性

    在 msgpack-java 0.6 或者早期的版本中,POJO 在 MessagePack 中被序列化和反序列化为数组变量. 变量的顺序是基于 Java 类中变量的内部顺序了,这种本来是一种原生的序 ...

  4. LCA离线Tarjan,树上倍增入门题

    离线Tarjian,来个JVxie大佬博客最近公共祖先LCA(Tarjan算法)的思考和算法实现,还有zhouzhendong大佬的LCA算法解析-Tarjan&倍增&RMQ(其实你们 ...

  5. jQuery属性操作之类样式操作

    类样式的操作:指对DOM属性className进行添加.移除操作.比如addClass().removeClass().toggleClass(). 1. addClass() 1.1 概述 $(se ...

  6. 微信小程序_(组件)swiper轮播图

    微信小程序swiper轮播图组件官方文档 传送门 Learn: swiper组件 一.swiper组件 indicator-dots:是否显示面板指示点[默认值false] autoplay:是否自动 ...

  7. Linux 如何查看端口与进程占用情况

    1 lsof -i:port  查看端口使用情况 lsof -i 如果出现 command not found,直接yum install lsof即可. (1) lsof -i lsof -i 用以 ...

  8. Docker关键概念阐述

    要了解Docker需要对其体系结构中的几个关键概念有所了解,主要包括image.container.service.swarm.stack等. 在介绍这几个概念时,会使用到一个测试环境,这个测试环境是 ...

  9. php的core问题

    我们在编写代码的时候,可能会发现,路径下多了一个类似这样的文件, 拿php举例  :  core.php_bin.4528.1379650721 这是因为我们在编写代码时候,出现了指针溢出,段错误等问 ...

  10. 转贴 使用正则表达式解析一般sql语句(C++)

    https://blog.csdn.net/dreamgchuan/article/details/47715743 --END--2019年9月5日11点58分