首页 > 其他分享 >63_索引管理_内核级知识点:深入探秘type底层数据结构

63_索引管理_内核级知识点:深入探秘type底层数据结构

时间:2024-10-02 13:00:52浏览次数:6  
标签:知识点 name index price period 63 type string

type,是一个index中用来区分类似的数据的,类似的数据,但是可能有不同的fields,而且有不同的属性来控制索引建立、分词器
field的value,在底层的lucene中建立索引的时候,全部是opaque bytes类型,不区分类型的
lucene是没有type的概念的,在document中,实际上将type作为一个document的field来存储,即_type,es通过_type来进行type的过滤和筛选
一个index中的多个type,实际上是放在一起存储的,因此一个index下,不能有多个type重名,而类型或者其他设置不同的,因为那样是无法处理的

{
"ecommerce": {
"mappings": {
"elactronic_goods": {
"properties": {
"name": {
"type": "string",
},
"price": {
"type": "double"
},
"service_period": {
"type": "string"
}
}
},
"fresh_goods": {
"properties": {
"name": {
"type": "string",
},
"price": {
"type": "double"
},
"eat_period": {
"type": "string"
}
}
}
}
}
}

{
"name": "geli kongtiao",
"price": 1999.0,
"service_period": "one year"
}

{
"name": "aozhou dalongxia",
"price": 199.0,
"eat_period": "one week"
}

在底层的存储是这样子的。。。。

{
"ecommerce": {
"mappings": {
"_type": {
"type": "string",
"index": "not_analyzed"
},
"name": {
"type": "string"
}
"price": {
"type": "double"
}
"service_period": {
"type": "string"
}
"eat_period": {
"type": "string"
}
}
}
}

{
"_type": "elactronic_goods",
"name": "geli kongtiao",
"price": 1999.0,
"service_period": "one year",
"eat_period": ""
}

{
"_type": "fresh_goods",
"name": "aozhou dalongxia",
"price": 199.0,
"service_period": "",
"eat_period": "one week"
}

最佳实践,将类似结构的type放在一个index下,这些type应该有多个field是相同的
假如说,你将两个type的field完全不同,放在一个index下,那么就每条数据都至少有一半的field在底层的lucene中是空值,会有严重的性能问题

标签:知识点,name,index,price,period,63,type,string
From: https://www.cnblogs.com/siben/p/18444590

相关文章

  • C语言 typedef
    概念在C语言中,typedef是一个关键字,用于为已有的数据类型定义一个新的别名。它本身并不创建新的数据类型,而是给现有的类型赋予一个更方便、更易理解或更符合项目特定需求的名字。基本用法基本数据类型别名例如,为unsignedint定义一个新的别名uint:typedefunsignedint......
  • 35_初识搜索引擎_multi-index&multi-type搜索模式解析以及搜索原理初步图解
    课程大纲1、multi-index和multi-type搜索模式告诉你如何一次性搜索多个index和多个type下的数据/_search:所有索引,所有type下的所有数据都搜索出来/index1/_search:指定一个index,搜索其下所有type的数据/index1,index2/_search:同时搜索两个index下的数据/1,2/_search:按照通配......
  • mybatis xml里的 resultMap、resultOrdered、resultSets、resultSetType、resultType
    在MyBatis中,映射结果集是一项重要的功能,用于将数据库查询结果映射到Java对象中。为了实现这一功能,MyBatis提供了多个配置选项,如resultMap、resultOrdered、resultSets、resultSetType和resultType。以下是这些配置选项的详细解释及示例:1.resultTyperesultType是最简单的结......
  • 信息学奥赛复赛复习08-CSP-J2020-03表达式前置知识点-后缀表达式、栈、字符读取
    PDF文档公众号回复关键字:202410011P1449后缀表达式[题目描述]所谓后缀表达式是指这样的一个表达式:式中不再引用括号,运算符号放在两个运算对象之后,所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的优先级)本题中运算符仅包含+-*/。保证对于/运算......
  • TypeScript在Vue中的使用-------ref
    我们平时的写法import{ref}from"vue";constmsg=ref("你好世界");使用TS的写法import{ref}from"vue";constmsg=ref<string>("你好世界");listType表示数组里面放对象,我们可以用如下的方法进行调用typelistType={id:numbername:......
  • TypeScrip在vue中的使用----defineEmits
    向父元素发送消息之前的语法: 在TS语法中,我们既要对defineEmits做类型约束,又要对emits做类型约束。最主要是对defineEmits做一个泛型的约束。//在泛型对象中,有几个事件就写几个约束typeemitsType={//()中有n个参数,第一个固定的是e,其他有具体参数决定。具体的写法......
  • leetcode刷题day33|动态规划Part02(62.不同路径、63. 不同路径 II、 343.整数拆分、96.
    62.不同路径机器人从(0,0)位置出发,到(m-1,n-1)终点。动规五部曲1、确定dp数组(dptable)以及下标的含义dp[i][j]:表示从(0,0)出发,到(i,j)有dp[i][j]条不同的路径。2、确定递推公式想要求dp[i][j],只能有两个方向来推导出来,即dp[i-1][j]和dp[i][j-1]。dp[i]......
  • TypeScrip在vue中的使用-----defineProps
    小知识点:在vscode中定义好子组件的vue视图后。我们可以直接使用<子组件/>来使用子组件,因为我们使用了import插件,他会自动import所需文件。使用一:父向子传值,我们之前父向子传值的时候,子组件是如下:defineProps({house:{type:String,required:true,......
  • MathType7.7纯净和谐绿色版安装包下载
    在现代教育中,数学是一门基础而重要的学科。无论是中小学的基础教育,还是大学及科研机构中的高级研究,都离不开数学的应用和探索。随着科技的发展,电子文档和在线学习平台逐渐普及,如何高效地编辑和展示数学公式成为了一个亟待解决的问题。MathType数学公式编辑器正是在这样的背景下......
  • C++ 语言特性04 - decltype关键字
    一:概述        decltype是C++11引入的一个关键字,用于查询表达式的类型,而不对表达式进行求值。它的主要作用是在编译时确定变量或表达式的类型,非常适合在模板编程和泛型编程中使用。二:使用场景    1.获取变量的类型intx=10;decltype(x)y=20;//......