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. Ubuntu:笔记本计算机屏幕合盖后进入/不进入休眠设置

    造冰箱的大熊猫,本文在Ubuntu 18.04上验证通过@cnblogs 2019/5/12 1.问题描述 安装有Ubuntu的笔记本计算机与KVM控制器相连,同时一台台式机也与KVM相连.启动笔记本 ...

  2. Word:英文从“单词”中间断行

    造冰箱的大熊猫@cnblogs 2019/2/1 在Word输入一个比较长的英文内容,比如“D:/software/myapp/bulids/FieldTest/Final_0533/PViewEdi ...

  3. codevs 2291 糖果堆 x

                         题目描述 Description [Shadow 1]第一题 WJMZBMR买了很多糖果,分成了N堆,排成一列.WJMZBMR说,如果Shadow能迅速求出第 ...

  4. 【CUDA 基础】3.3 并行性表现

    title: [CUDA 基础]3.3 并行性表现 categories: - CUDA - Freshman tags: - nvprof toc: true date: 2018-04-15 21 ...

  5. easyUI datagrid中checkbox选中事件以及行点击事件,翻页之后还可以选中

    DataGrid其中与选择,勾选相关 DataGrid属性:singleSelect boolean 如果为true,则只允许选择一行. false ctrlSelect boolean 在启用多行选 ...

  6. jQuery选择器(6)

    一:基本选择器 标签选择器:$("标签名"); 返回一组元素集合(匹配相同的标签名) 类选择器:$(".class类名"); 返回一组元素集合(匹配相同的cla ...

  7. Python excel文件操作,编程练习题实例七十五

    纯文本文件 student.txt为学生信息, 里面的内容(包括花括号)如下所示: { "1":["张三",150,120,100], "2" ...

  8. AcWing:143. 最大异或对(01字典树 + 位运算 + 异或性质)

    在给定的N个整数A1,A2……ANA1,A2……AN中选出两个进行xor(异或)运算,得到的结果最大是多少? 输入格式 第一行输入一个整数N. 第二行输入N个整数A1A1-ANAN. 输出格式 输出一 ...

  9. 开源!js实现微信/QQ直接跳转到支付宝APP打开口令领红包!附:demo

    最近支付宝的领红包可真是刷爆了各个微信群啊,满群都是支付宝口令. 可是这样推广可不是办法,又要复制又要打开支付宝又要点领取,太麻烦了. 于是乎,提出了一个疑问!是否可以在微信里面点一个链接然后直接打开 ...

  10. TCP最大报文段MSS源码分析

    概述 本文主要对MSS相关的几个字段结合源码流程进行分析: 字段含义 user_mss(tcp_options_received)–用户配置的mss,优先级最高: mss_clamp(tcp_opti ...