search

阅读 / 问答 / 标签

深入研究查询Elasticsearch,过滤查询和全文搜索

或如何了解缺少哪些官方文件 如果我不得不用一个短语来描述Elasticsearch,我会说: 目前,Elasticsearch在十大最受欢迎的开源技术中。 公平地说,它结合了许多本身并不独特的关键功能,但是,当结合使用时,它可以成为最佳的搜索引擎/分析平台。 更准确地说,由于以下功能的结合,Elasticsearch变得如此流行: · 搜索相关性评分 · 全文搜索 · 分析(汇总) · 无模式(对数据模式无限制),NoSQL,面向文档 · 丰富的数据类型选择 · 水平可扩展 · 容错的 通过与Elasticsearch进行合作,我很快意识到,官方文档看起来更像是所谓文档的"挤压"。 我不得不在Google上四处搜寻,并且大量使用stackowerflow,所以我决定编译这篇文章中的所有信息。 在本文中,我将主要撰写有关查询/搜索Elasticsearch集群的文章。 您可以通过多种不同的方式来实现大致相同的结果,因此,我将尝试说明每种方法的利弊。 更重要的是,我将向您介绍两个重要的概念-查询和过滤器上下文-在文档中没有很好地解释。 我将为您提供一组规则,以决定何时使用哪种方法更好。 在阅读本文后,如果我只想让您记住一件事,那就是: 当我们谈论Elasticsearch时,总会有一个相关性分数。 相关性分数是严格的正浮点数,表示每个文档满足搜索标准的程度。 该分数是相对于分配的最高分数的,因此,分数越高,文档与搜索条件的相关性越好。 但是,过滤器和查询是您在编写查询之前应该能够理解的两个不同概念。 一般来说,过滤器上下文是一个"是/否"选项,其中每个文档都与查询匹配或不匹配。 一个很好的例子是SQL WHERE,后面是一些条件。 SQL查询总是返回严格符合条件的行。 SQL查询无法返回歧义结果。 另一方面,Elasticsearch查询上下文显示了每个文档与您的需求的匹配程度。 为此,查询使用分析器查找最佳匹配。 经验法则是将过滤器用于: · 是/否搜索 · 搜索精确值(数字,范围和关键字) 将查询用于: · 结果不明确(某些文档比其他文档更适合) · 全文搜索 此外,Elasticsearch将自动缓存过滤器的结果。 在第1部分和第2部分中,我将讨论查询(可以转换为过滤器)。 请不要将结构化和全文与查询和过滤器混淆-这是两件事。 结构化查询也称为术语级查询,是一组查询方法,用于检查是否应选择文档。 因此,在很多情况下,没有真正必要的相关性评分-文档匹配或不匹配(尤其是数字)。 术语级查询仍然是查询,因此它们将返回分数。 名词查询 Term Query 返回字段值与条件完全匹配的文档。 查询一词是SQL select * from table_name where column_name =...的替代方式 名词查询直接进入倒排索引,这可以使其快速进行。 在处理文本数据时,最好仅将term用于keyword字段。 名词查询默认情况下在查询上下文中运行,因此,它将计算分数。 即使所有返回的文档的分数相同,也将涉及其他计算能力。 带有过滤条件的 名词 查询 如果我们想加速名词查询并使其得到缓存,则应将其包装在constant_score过滤器中。 还记得经验法则吗? 如果您不关心相关性得分,请使用此方法。 现在,该查询没有计算任何相关性分数,因此,它更快。 而且,它是自动缓存的。 快速建议-对文本字段使用匹配而不是名词。 请记住,名词查询直接进入倒排索引。名词查询采用您提供的值并按原样搜索它,这就是为什么它非常适合查询未经任何转换存储的keyword字段。 多名词查询 Terms query 如您所料,多名词查询使您可以返回至少匹配一个确切名词的文档。 多名词查询在某种程度上是SQL select * from table_name where column_name is in...的替代方法 重要的是要了解,Elasticsearch中的查询字段可能是一个列表,例如{“ name”:[“ Odin”,“ Woden”,“ Wodan”]}。如果您执行的术语查询包含以下一个或多个,则该记录将被匹配-它不必匹配字段中的所有值,而只匹配一个。 与名词查询相同,但是这次您可以在查询字段中指定多少个确切术语。 您指定必须匹配的数量-一,二,三或全部。 但是,此数字是另一个数字字段。 因此,每个文档都应包含该编号(特定于该特定文档)。 返回查询字段值在定义范围内的文档。 等价于SQL select * from table_name where column_name is between... 范围查询具有自己的语法: · gt 大于 · gte 大于或等于 · lt 小于 · lte 小于或等于 一个示例,该字段的值应≥4且≤17 范围查询也可以很好地与日期配合使用。 正则表达式查询返回其中字段与您的正则表达式匹配的文档。 如果您从未使用过正则表达式,那么我强烈建议您至少了解一下它是什么以及何时可以使用它。 Elasticsearch的正则表达式是Lucene的正则表达式。 它具有标准的保留字符和运算符。 如果您已经使用过Python的re软件包,那么在这里使用它应该不是问题。 唯一的区别是Lucene的引擎不支持^和$等锚运算符。 您可以在官方文档中找到regexp的完整列表。 除正则表达式查询外,Elsticsearch还具有通配符和前缀查询。从逻辑上讲,这两个只是regexp的特殊情况。 不幸的是,我找不到关于这三个查询的性能的任何信息,因此,我决定自己对其进行测试,以查看是否发现任何重大差异。 在比较使用rehexp和通配符查询时,我找不到性能上的差异。如果您知道有什么不同,请给我发消息。 由于Elasticsearch是无模式的(或没有严格的模式限制),因此当不同的文档具有不同的字段时,这是一种很常见的情况。 结果,有很多用途来了解文档是否具有某些特定字段。 全文查询适用于非结构化文本数据。 全文查询利用了分析器。 因此,我将简要概述Elasticsearch的分析器,以便我们可以更好地分析全文查询。 每次将文本类型数据插入Elasticsearch索引时,都会对其进行分析,然后存储在反向索引中。根据分析器的配置方式,这会影响您的搜索功能,因为分析器也适用于全文搜索。 分析器管道包括三个阶段: 总有一个令牌生成器和零个或多个字符和令牌过滤器。 1)字符过滤器按原样接收文本数据,然后可能在对数据进行标记之前对其进行预处理。 字符过滤器用于: · 替换与给定正则表达式匹配的字符 · 替换与给定字符串匹配的字符 · 干净的HTML文字 2)令牌生成器将字符过滤器(如果有)之后接收到的文本数据分解为令牌。 例如,空白令牌生成器只是将文本分隔为空白(这不是标准的)。 因此,Wednesday is called after Woden, 将被拆分为[Wednesday, is, called, after, Woden.]。 有许多内置标记器可用于创建自定义分析器。 删除标点符号后,标准令牌生成器将使用空格分隔文本。 对于绝大多数语言来说,这是最中立的选择。 除标记化外,标记化器还执行以下操作: · 跟踪令牌顺序, · 注释每个单词的开头和结尾 · 定义令牌的类型 3)令牌过滤器对令牌进行一些转换。您可以选择将许多不同的令牌过滤器添加到分析器中。一些最受欢迎的是: · 小写 · 词干(存在多种语言!) · 删除重复 · 转换为等效的ASCII · 模式的解决方法 · 令牌数量限制 · 令牌的停止列表(从停止列表中删除令牌) 标准分析器是默认分析器。 它具有0个字符过滤器,标准令牌生成器,小写字母和停止令牌过滤器。 您可以根据需要组成自定义分析器,但是内置分析器也很少。 语言分析器是一些最有效的即用型分析器,它们利用每种语言的细节来进行更高级的转换。 因此,如果您事先知道数据的语言,建议您从标准分析器切换为数据的一种语言。 全文查询将使用与索引数据时使用的分析器相同的分析器。更准确地说,您查询的文本将与搜索字段中的文本数据进行相同的转换,因此两者处于同一级别。 匹配查询是用于查询文本字段的标准查询。 我们可以将匹配查询称为名词查询的等效项,但适用于文本类型字段(而在处理文本数据时,名词应仅用于关键字类型字段)。 默认情况下,传递给查询参数的字符串(必需的一个)将由与应用于搜索字段的分析器相同的分析器处理。 除非您自己使用analyzer参数指定分析器。 当您指定要搜索的短语时,将对其进行分析,并且结果始终是一组标记。默认情况下,Elasticsearch将在所有这些标记之间使用OR运算符。这意味着至少应该有一场比赛-更多的比赛虽然会得分更高。您可以在运算符参数中将其切换为AND。在这种情况下,必须在文档中找到所有令牌才能将其返回。 如果要在OR和AND之间输入某些内容,则可以指定minimum_should_match参数,该参数指定应匹配的子句数。 可以数字和百分比指定。 模糊参数(可选)可让您忽略错别字。 Levenshtein距离用于计算。 如果您将匹配查询应用于关键字keyword字段,则其效果与词条查询相同。 更有趣的是,如果将存储在反向索引中的令牌的确切值传递给term查询,则它将返回与匹配查询完全相同的结果,但是会更快地返回到反向索引。 与匹配相同,但顺序和接近度很重要。 匹配查询不了解序列和接近度,因此,只有通过其他类型的查询才能实现词组匹配。 match_phrase查询具有slop参数(默认值为0),该参数负责跳过术语。 因此,如果您指定斜率等于1,则短语中可能会省略一个单词。 多重比对查询的功能与比对相同,唯一的不同是多重比对适用于多个栏位 · 字段名称可以使用通配符指定 · 默认情况下,每个字段均加权 · 每个领域对得分的贡献都可以提高 · 如果没有在fields参数中指定任何字段,那么将搜索所有符合条件的字段 有多种类型的multi_match。 我不会在这篇文章中描述它们,但是我将解释最受欢迎的: best_fields类型(默认值)更喜欢在一个字段中找到来自搜索值的令牌的结果,而不是将搜索的令牌分配到不同字段中的结果。 most_fields与best_fields类型相反。 phrase类型的行为与best_fields相同,但会搜索与match_phrase类似的整个短语。 我强烈建议您查阅官方文档,以检查每个字段的得分计算准确度。 复合查询将其他查询包装在一起。 复合查询: · 结合分数 · 改变包装查询的行为 · 将查询上下文切换到过滤上下文 · 以上任意一项 布尔查询将其他查询组合在一起。 这是最重要的复合查询。 布尔查询使您可以将查询上下文中的搜索与过滤器上下文搜索结合在一起。 布尔查询具有四个可以组合在一起的出现(类型): · must或"必须满足该条款" · should或"如果满足条款,则对相关性得分加分" · 过滤器filter或"必须满足该条款,但不计算相关性得分" · must_not或“与必须相反”,不会有助于相关度得分 必须和应该→查询上下文 过滤器和must_not→过滤器上下文 对于那些熟悉SQL的人,必须为AND,而应为OR运算符。 因此,必须满足must子句中的每个查询。 对于大多数查询,提升查询与boost参数相似,但并不相同。 增强查询将返回与肯定子句匹配的文档,并降低与否定子句匹配的文档的得分。 如我们在术语查询示例中先前看到的,constant_score查询将任何查询转换为相关性得分等于boost参数(默认值为1)的过滤器上下文。 让我知道是否您想阅读另一篇文章,其中提供了所有查询的真实示例。 我计划在Elasticsearch上发布更多文章,所以不要错过。 你已经读了很长的内容,所以如果你阅读到这里: 综上所述,Elasticsearch符合当今的许多用途,有时很难理解什么是最佳工具。 如果不需要相关性分数来检索数据,请尝试切换到过滤器上下文。 另外,了解Elasticsearch的工作原理也至关重要,因此,我建议您始终了解分析器的功能。 Elasticsearch中还有许多其他查询类型。 我试图描述最常用的。 我希望你喜欢它。 (本文翻译自kotartemiy u2714ufe0f的文章《Deep Dive into Querying Elasticsearch. Filter vs Query. Full-text search》,参考:https://towardsdatascience.com/deep-pe-into-querying-elasticsearch-filter-vs-query-full-text-search-b861b06bd4c0)

ElasticSearch存储

使用ElasticSearch快一年了,自认为相关API使用的还比较6,产品提的一些搜索需求实现起来都从心应手;但是前几天同事的一个问题直接将我打回到小白,同事问了句:“ ElasticSearch的索引是怎么存储的?删除文档和更新文档是怎么实现的? ”,当时我就懵逼了,说了句得查一下,好尴尬...... 回想起来发现自己从来都没有深入了解过这些细节,于是便觉得非常有必要对ElasticSearch的文档存储做一次深入的了解,知其然不知其所以然对于我们来说是远远不够的,在ElasticSearch中,文档( Document )存储的介质分为内存和硬盘两种: 同时,ElasticSearch进程自身的运行也需要内存空间,必须保证ElasticSearch进程有充足的运行时内存。为了使ElasticSearch引擎达到最佳性能,必须合理分配有限的内存和硬盘资源。 ElasticSearch引擎把文档数据写入到倒排索引( Inverted Index )的数据结构中,倒排索引建立的是分词( Term )和文档( Document )之间的映射关系,在倒排索引中,数据是面向词( Term )而不是面向文档( Document )的。 举个栗子,假设我们有两个文档,每个文档的content域包含如下内容: 1. The quick brown fox jumped over the lazy dog 2. Quick brown foxes leap over lazy dogs in summer 文档和词之间的关系如下图: 字段值被分析之后,存储在倒排索引中,倒排索引存储的是分词( Term )和文档( Doc )之间的关系,简化版的倒排索引如下图: 从图中可以看出,倒排索引有一个词条的列表,每个分词在列表中是唯一的,记录着词条出现的次数,以及包含词条的文档。实际中ElasticSearch引擎创建的倒排索引比这个复杂得多。 段是倒排索引的组成部分,倒排索引是由段( Segment )组成的,段存储在硬盘( Disk )文件中。 索引段不是实时更新的,这意味着,段在写入硬盘之后,就不再被更新。在删除文档时,ElasticSearch引擎把已删除的文档的信息存储在一个单独的文件中,在搜索数据时,ElasticSearch引擎首先从段中执行查询,再从查询结果中过滤被删除的文档 。这意味着,段中存储着被删除的文档,这使得段中含有”正常文档“的密度降低。 多个段可以通过段合并(Segment Merge)操作把“已删除”的文档将从段中物理删除,把未删除的文档合并到一个新段中,新段中没有”已删除文档“,因此,段合并操作能够提高索引的查找速度 ;但是,段合并是IO密集型操作,需要消耗大量的硬盘IO。 在ElasticSearch中,大多数查询都需要从硬盘文件(索引的段数据存储在硬盘文件中)中获取数据;因此, 在全局配置文件elasticsearch.yml 中,把结点的路径(Path)配置为性能较高的硬盘,能够提高查询性能 。默认情况下,ElasticSearch使用基于安装目录的相对路径来配置结点的路径,安装目录由属性path.home显示,在home path下,ElasticSearch自动创建config,data,logs和plugins目录,一般情况下不需要对结点路径单独配置。结点的文件路径配置项: path.data:设置ElasticSearch结点的索引数据保存的目录,多个数据文件使用逗号隔开。 例如,path.data: /path/to/data1,/path/to/data2 ; path.work:设置ElasticSearch的临时文件保存的目录; 映射参数index决定ElasticSearch引擎是否对文本字段执行分析操作,也就是说分析操作把文本分割成一个一个的分词,也就是标记流( Token Stream ),把分词编入索引,使分词能够被搜索到: 1) 当index为analyzed时,该字段是分析字段,ElasticSearch引擎对该字段执行分析操作,把文本分割成分词流,存储在倒排索引中,使其支持全文搜索。 2)当index为not_analyzed时,该字段不会被分析,ElasticSearch引擎把原始文本作为单个分词存储在倒排索引中,不支持全文搜索,但是支持词条级别的搜索;也就是说,字段的原始文本不经过分析而存储在倒排索引中,把原始文本编入索引,在搜索的过程中,查询条件必须全部匹配整个原始文本。 3)当index为no时,该字段不会被存储到倒排索引中,不会被搜索到。 字段的原始值是否被存储到倒排索引,是由映射参数store决定的,默认值是false,也就是,原始值不存储到倒排索引中。 映射参数index和store的区别在于: store用于获取(Retrieve)字段的原始值,不支持查询,可以使用投影参数fields,对stroe属性为true的字段进行过滤,只获取(Retrieve)特定的字段,减少网络负载; index用于查询(Search)字段,当index为analyzed时,对字段的分词执行全文查询;当index为not_analyzed时,字段的原始值作为一个分词,只能对字段的原始文本执行词条查询; 如果设置字段的index属性为not_analyzed,原始文本将作为单个分词,其最大长度跟UTF8 编码有关,默认的最大长度是32766Bytes(约32KB),如果字段的文本超过该限制,那么ElasticSearch将跳过( Skip )该文档,并在Response中抛出异常消息: operation[607]: index returned 400 _index: ebrite _type: events _id: 76860 _version: 0 error: Type: illegal_argument_exception Reason: "Document contains at least one immense term in field="event_raw" (whose UTF8 encoding is longer than the max length 32766), all of which were skipped. Please correct the analyzer to not produce such terms. The prefix of the first immense term is: "[112, 114,... 115]...", original message: bytes can be at most 32766 in length; got 35100" CausedBy:Type: max_bytes_length_exceeded_exception Reason: "bytes can be at most 32766 in length; got 35100" 可以在字段中设置ignore_above属性,该属性值指的是字符数量,而不是字节数量;由于一个UTF8字符最多占用3个字节,因此,可以设置 “ignore_above”:10000 这样,超过30000字节之后的字符将会被分析器忽略,单个分词( Term )的最大长度是30000Bytes。 The value for ignore_above is the character count, but Lucene counts bytes. If you use UTF-8 text with many non-ASCII characters, you may want to set the limit to 32766 / 3 = 10922 since UTF-8 characters may occupy at most 3 bytes. 默认情况下,大多数字段被索引之后,能够被搜索到。 倒排索引是由一个有序的词条列表构成的,每一个词条在列表中都是唯一存在的,通过这种数据存储模式,你可以很快查找到包含某一个词条的文档列表 。 但是,排序和聚合操作采用相反的数据访问模式,这两种操作不是查找词条以发现文档,而是查找文档,以发现字段中包含的词条。ElasticSearch使用列式存储实现排序和聚合查询。 文档值( doc_values )是存储在硬盘上的数据结构,在索引时( index time )根据文档的原始值创建,文档值是一个列式存储风格的数据结构,非常适合执行存储和聚合操作,除了字符类型的分析字段之外,其他字段类型都支持文档值存储。默认情况下,字段的文档值存储是启用的,除了字符类型的分析字段之外。如果不需要对字段执行排序或聚合操作,可以禁用字段的文档值,以节省硬盘空间。 字符类型的分析字段,不支持文档值(doc_values),但支持fielddata数据结构。fielddata数据结构存储在JVM的堆内存中。相比文档值(数据存储在硬盘上),fielddata字段(数据存储在内存中)的查询性能更高。默认情况下,ElasticSearch引擎在第一次对字段执行聚合或排序查询时(query-time),创建fielddata数据结构;在后续的查询请求中,ElasticSearch引擎使用fielddata数据结构以提高聚合和排序的查询性能。 在ElasticSearch中,倒排索引的各个段( segment )的数据存储在硬盘文件上,从整个倒排索引的段中读取字段数据之后,ElasticSearch引擎首先反转词条和文档之间的关系,创建文档和词条之间的关系,即创建顺排索引,然后把顺排索引存储在JVM的堆内存中。把倒排索引加载到fielddata结构是一个非常消耗硬盘IO资源的过程。因此,数据一旦被加载到内存,最好保持在内存中,直到索引段( segment )的生命周期结束。 默认情况下,倒排索引的每个段( segment ),都会创建相应的fielddata结构,以存储字符类型的分析字段值,但是,需要注意的是,分配的JVM堆内存是有限的,Fileddata把数据存储在内存中,会占用过多的JVM堆内存,甚至耗尽JVM赖以正常运行的内存空间,反而会降低ElasticSearch引擎的查询性能。 fielddata会消耗大量的JVM内存,因此,尽量为JVM设置大的内存,不要为不必要的字段启用fielddata存储。通过format参数控制是否启用字段的fielddata特性,字符类型的分析字段,fielddata的默认值是paged_bytes,这就意味着,默认情况下,字符类型的分析字段启用fielddata存储。一旦禁用fielddata存储,那么字符类型的分析字段将不再支持排序和聚合查询。 loading属性控制fielddata加载到内存的时机,可能的值是lazy,eager和eager_global_ordinals,默认值是lazy。 lazy:fielddata只在需要时加载到内存,默认情况下,在第一次搜索时,fielddata被加载到内存中;但是,如果查询一个非常大的索引段(Segment),lazy加载方式会产生较大的时间延迟。 eager:在倒排索引的段可用之前,其数据就被加载到内存,eager加载方式能够减少查询的时间延迟,但是,有些数据可能非常冷,以至于没有请求来查询这些数据,但是冷数据依然被加载到内存中,占用紧缺的内存资源。 eager_global_ordinals:按照global ordinals积极把fielddata加载到内存。 ElasticSearch使用 JAVA_OPTS 环境变量( Environment Variable )启动JVM进程,在 JAVA_OPTS 中,最重要的配置是: -Xmx参数控制分配给JVM进程的最大内存,-Xms参数控制分配给JVM进程的最小内存 。(在ElasticSearch启动命令后面可以通过参数方式配置,如: /usr/local/elasticsearch/bin/elasticsearch -d --Xmx=10g --Xms=10g )通常情况下,使用默认的配置就能满足工程需要。 ES_HEAP_SIZE 环境变量控制分配给JVM进程的堆内存( Heap Memory )大小,顺排索引( fielddata )的数据存储在堆内存( Heap Memory )中。 大多数应用程序尝试使用尽可能多的内存,并尽可能把未使用的内存换出,但是,内存换出会影响ElasticSearch引擎的查询性能,推荐启用内存锁定,禁用ElasticSearch内存的换进换出。 在全局配置文档 elasticsearch.yml 中,设置 bootstrap.memory_lock 为ture,这将锁定ElasticSearch进程的内存地址空间,阻止ElasticSearch内存被OS换出( Swap out )。 通过学习,算是对ElasticSearch索引存储及更新有了一个较深的了解,至少能让我从容去面对同事的提问,但与此同时给我敲响了警钟,在使用一门技术的同时,更应该去了解它具体的原理,而不仅仅是停留在使用级别;在学习的路上,我们仍需要更加努力......

Elasticsearch数据迁移与集群容灾

本文讨论如何跨集群迁移ES数据以及如何实现ES的同城跨机房容灾和异地容灾。 在ES的生产实践中,往往会遇到以下问题: 根据业务需求,存在以下场景: 如果是第一种场景,数据迁移过程中可以停止写入,可以采用诸如elasticsearch-dump、logstash、reindex、snapshot等方式进行数据迁移。实际上这几种工具大体上可以分为两类: 如果是第二种场景,数据迁移过程中旧集群不能停止写入,需要根据实际的业务场景解决数据一致性的问题: 下面介绍一下在旧集群可以停止写入的情况下进行数据迁移的几种工具的用法。 elasticsearch-dump是一款开源的ES数据迁移工具,github地址: https://github.com/taskrabbit/elasticsearch-dump 以下操作通过elasticdump命令将集群x.x.x.1中的companydatabase索引迁移至集群x.x.x.2。注意第一条命令先将索引的settings先迁移,如果直接迁移mapping或者data将失去原有集群中索引的配置信息如分片数量和副本数量等,当然也可以直接在目标集群中将索引创建完毕后再同步mapping与data logstash支持从一个ES集群中读取数据然后写入到另一个ES集群,因此可以使用logstash进行数据迁移,具体的配置文件如下: 上述配置文件将源ES集群的所有索引同步到目标集群中,当然可以设置只同步指定的索引,logstash的更多功能可查阅logstash官方文档 logstash 官方文档 . reindex是Elasticsearch提供的一个api接口,可以把数据从一个集群迁移到另外一个集群。 snapshot api是Elasticsearch用于对数据进行备份和恢复的一组api接口,可以通过snapshot api进行跨集群的数据迁移,原理就是从源ES集群创建数据快照,然后在目标ES集群中进行恢复。需要注意ES的版本问题: 如果旧集群不能停止写入,此时进行在线数据迁移,需要保证新旧集群的数据一致性。目前看来,除了官方提供的CCR功能,没有成熟的可以严格保证数据一致性的在线数据迁移方法。此时可以从业务场景出发,根据业务写入数据的特点选择合适的数据迁移方案。 一般来说,业务写入数据的特点有以下几种: 下面来具体分析不同的写入数据的特点下,该如何选择合适的数据迁移方式。 在日志或者APM的场景中,数据都是时序数据,一般索引也都是按天创建的,当天的数据只会写入当前的索引中。此时,可以先把存量的不再写入的索引数据一次性同步到新集群中,然后使用logstash或者其它工具增量同步当天的索引,待数据追平后,把业务对ES的访问切换到新集群中。 具体的实现方案为: add only的数据写入方式,可以按照数据写入的顺序(根据_doc进行排序,如果有时间戳字段也可以根据时间戳排序)批量从旧集群中拉取数据,然后再批量写入新集群中;可以通过写程序,使用用scroll api 或者search_after参数批量拉取增量数据,再使用bulk api批量写入。 使用scroll拉取增量数据: 上述操作可以每分钟执行一次,拉起前一分钟新产生的数据,所以数据在旧集群和新集群的同步延迟为一分钟。 使用search_after批量拉取增量数据: 上述操作可以根据需要自定义事件间隔执行,每次执行时修改search_after参数的值,获取指定值之后的多条数据;search_after实际上相当于一个游标,每执行一次向前推进,从而获取到最新的数据。 使用scroll和search_after的区别是: 另外,如果不想通过写程序迁移旧集群的增量数据到新集群的话,可以使用logstash结合scroll进行增量数据的迁移,可参考的配置文件如下: 使用过程中可以根据实际业务的需求调整定时任务参数schedule以及scroll相关的参数。 业务场景如果是写入ES时既有追加,又有存量数据的更新,此时比较重要的是怎么解决update操作的数据同步问题。对于新增的数据,可以采用上述介绍的增量迁移热索引的方式同步到新集群中。对于更新的数据,此时如果索引有类似于updateTime的字段用于标记数据更新的时间,则可以通过写程序或者logstash,使用scroll api根据updateTime字段批量拉取更新的增量数据,然后再写入到新的集群中。 可参考的logstash配置文件如下: 实际应用各种,同步新增(add)的数据和更新(update)的数据可以同时进行。但是如果索引中没有类似updateTime之类的字段可以标识出哪些数据是更新过的,目前看来并没有较好的同步方式,可以采用CCR来保证旧集群和新集群的数据一致性。 如果业务写入ES时既有新增(add)数据,又有更新(update)和删除(delete)数据,可以采用6.5之后商业版X-pack插件中的CCR功能进行数据迁移。但是使用CCR有一些限制,必须要注意: 具体的使用方式如下: 如果业务是通过中间件如kafka把数据写入到ES, 则可以使用如下图中的方式,使用logstash消费kafka的数据到新集群中,在旧集群和新集群数据完全追平之后,可以切换到新集群进行业务的查询,之后再对旧的集群下线处理。 使用中间件进行同步双写的优点是: 当然,双写也可以使用其他的方式解决,比如自建proxy,业务写入时向proxy写入,proxy把请求转发到一个或者多个集群中,但是这种方式存在以下问题: 随着业务规模的增长,业务侧对使用的ES集群的数据可靠性、集群稳定性等方面的要求越来越高,所以要比较好的集群容灾方案支持业务侧的需求。 如果是公司在自建IDC机房内,通过物理机自己搭建的ES集群,在解决跨机房容灾的时候,往往会在两个机房 部署两个ES集群,一主一备,然后解决解决数据同步的问题;数据同步一般有两种方式,一种方式双写,由业务侧实现双写保证数据一致性,但是双写对业务侧是一个挑战,需要保证数据在两个集群都写成功才能算成功。另外一种方式是异步复制,业务侧只写主集群,后台再把数据同步到备集群中去,但是比较难以保证数据一致性。第三种方式是通过专线打通两个机房,实现跨机房部署,但是成本较高。 因为数据同步的复杂性,云厂商在实现ES集群跨机房容灾的时候,往往都是通过只部署一个集群解决,利用ES自身的能力同步数据。国外某云厂商实现跨机房部署ES集群的特点1是不强制使用专用主节点,如上图中的一个集群,只有两个节点,既作为数据节点也作为候选主节点;主分片和副本分片分布在两个可用区中,因为有副本分片的存在,可用区1挂掉之后集群仍然可用,但是如果两个可用区之间网络中断时,会出现脑裂的问题。如下图中使用三个专用主节点,就不会存在脑裂的问题了。 但是如果一个地域没有三个可用区怎么办呢,那就只能在其中一个可用区中放置两个专用主节点了,如国内某云厂商的解决方案: 但是重建节点的过程还是存在问题的,如上图中,集群本身的quorum应该为2,可用区1挂掉后,集群中只剩一个专用主节点,需要把quorum参数(discovery.zen.minimum_master_nodes)调整为1后集群才能够正常进行选主,等挂掉的两个专用主节点恢复之后,需要再把quorum参数(discovery.zen.minimum_master_nodes)调整为2,以避免脑裂的发生。 当然还是有可以把无法选主和脑裂这两个可能发生的问题规避掉的解决方案,如下图中国内某云厂商的解决思路: 创建双可用区集群时,必须选择3个或者5个专用主节点,后台会在一个隐藏的可用区中只部署专用主节点;方案的优点1是如果一个可用区挂掉,集群仍然能够正常选主,避免了因为不满足quorum法定票数而无法选主的情况;2是因为必须要选择三个或5个专用主节点,也避免了脑裂。 想比较一主一备两个集群进行跨机房容灾的方式,云厂商通过跨机房部署集群把原本比较复杂的主备数据同步问题解决了,但是,比较让人担心的是,机房或者可用区之间的网络延迟是否会造成集群性能下降。这里针对腾讯云的双可用区集群,使用标准的benchmark工具对两个同规格的单可用区和双可用区集群进行了压测,压测结果如下图所示: 从压测结果的查询延时和写入延时指标来看,两种类型的集群并没有明显的差异,这主要得益与云上底层网络基础设施的完善,可用区之间的网络延迟很低。 类似于同城跨机房容灾,异地容灾一般的解决思路是在异地两个机房部署一主一备两个集群。业务写入时只写主集群,再异步地把数据同步到备集群中,但是实现起来会比较复杂,因为要解决主备集群数据一致性的问题,并且跨地域的话,网络延迟会比较高;还有就是,当主集群挂掉之后,这时候切换到备集群,可能两边数据还没有追平,出现不一致,导致业务受损。当然,可以借助于kafka等中间件实现双写,但是数据链路增加了,写入延迟也增加了,并且kafka出现问题,故障可能就是灾难性的了。 一种比较常见的异步复制方法是,使用snapshot备份功能,定期比如每个小时在主集群中执行一次备份,然后在备集群中进行恢复,但是主备集群会有一个小时的数据延迟。以腾讯云为例,腾讯云的ES集群支持把数据备份到对象存储COS中,因为可以用来实现主备集群的数据同步,具体的操作步骤可以参考 https://cloud.tencent.com/document/product/845/19549 。 在6.5版本官方推出了CCR功能之后,集群间数据同步的难题就迎刃而解了。可以利用CCR来实现ES集群的异地容灾: CCR是类似于数据订阅的方式,主集群为Leader, 备集群为Follower, 备集群以pull的方式从主集群拉取数据和写请求;在定义好Follwer Index时,Follwer Index会进行初始化,从Leader中以snapshot的方式把底层的segment文件全量同步过来,初始化完成之后,再拉取写请求,拉取完写请求后,Follwer侧进行重放,完成数据的同步。CCR的优点当然是因为可以同步UPDATE/DELETE操作,数据一致性问题解决了,同步延时也减小了。 另外,基于CCR可以和前面提到的跨机房容灾的集群结合,实现两地多中心的ES集群。在上海地域,部署有多可用区集群实现跨机房的高可用,同时在北京地域部署备集群作为Follwer利用CCR同步数据,从而在集群可用性上又向前走了一步,既实现了同城跨机房容灾,又实现了跨地域容灾。 但是在出现故障时需要把集群的访问从上海切换到北京时,会有一些限制,因为CCR中的Follwer Index是只读的,不能写入,需要切换为正常的索引才能进行写入,过程也是不可逆的。不过在业务侧进行规避,比如写入时使用新的正常的索引,业务使用别名进行查询,当上海地域恢复时,再反向的把数据同步回去。 现在问题就是保证上海地域集群数据的完整性,在上海地域恢复后,可以在上海地域新建一个Follower Index,以北京地域正在进行写的索引为Leader同步数据,待数据完全追平后,再切换到上海地域进行读写,注意切换到需要新建Leader索引写入数据。 数据同步过程如下所示: 1.上海主集群正常提供服务,北京备集群从主集群Follow数据 2.上海主集群故障,业务切换到北京备集群进行读写,上海主集群恢复后从北京集群Follow数据

Elasticsearch解决问题之道——请亮出你的DSL

0、引言 在业务开发中,我们往往会陷入开发的细枝末节之中,而忽略了事物的本源。 经常有同学问到: 等等等等….. 以上的看似复杂的问题,如果转换成DSL,清楚的写出来,梳理清楚问题的来龙去脉,问题就自然解决了一大半。 所以,请亮出你的dsl,不论什么语言的检索,转换到es查询都是sql查询,在es中对应dsl语法,es再拆解比如:分词match_phrase拆解成各term组合,最终传给lucene处理。 亮出你的dsl,确保编程里的实现和你的kibana或者head插件一致是非常重要、很容易被忽视的工作。 如果对dsl拆解不理解,那就再 加上 profile:true或者explain:true拆解结果一目了然。 维基百科定义:领域特定语言(英语:domain-specific language、DSL)指的是专注于某个应用程序领域的计算机语言。又译作领域专用语言。 Elasticsearch提供基于JSON的完整查询DSL来定义查询。 将Query DSL视为查询的AST(抽象语法树),由两种类型的子句组成: 1、叶子查询子句 叶查询子句查找特定字段中的特定值,例如匹配,术语或范围查询。 这些查询可以单独使用。 2、复合查询子句 复合查询子句可以组合其他叶子或复合查询,用于以逻辑方式组合多个查询(例如bool或dis_max查询),或更改其行为(例如constant_score查询)。 给个例子,一看就明白。 看到这里,可能会有人着急了:“我X,这不是官网定义吗?再写一遍有意思吗?” 引用一句鸡汤话,“再显而易见的道理,在中国,至少有一亿人不知道”。同样的,再显而易见的问题,在Elasticsearch技术社区也会有N多人提问。 基础认知不怕重复,可怕的是对基础的专研、打磨、夯实。 Elasticsearch相关的核心操作,广义上可做如下解读,不一定涵盖全,仅抛砖引玉,说明DSL的重要性。 从大到小。 集群的管理,一般我们会使用Kibana或者第三方工具Head插件、cerebro工具、elastic-hq工具。 基本上硬件的(磁盘、cpu、内存)使用率、集群的 健康 状态都能一目了然。 但基础的DSL会更便捷,便于细粒度分析问题。 如:集群状态查询: 如:节点热点线程查看: 如:集群分片分配情况查看: 索引生命周期是一直强调的概念,主要指索引的“生、老、病、死”的全过程链条的管理。 创建索引我们优先使用较单纯index更灵活的template模板。 创建索引类似Mysql的创建表的操作,提前设计好表结构对应ES是提前设计好M app ing非常重要。 两个维度: 举例: 如:索引清理缓存。 如:某原因导致分片重新分配,_recovery查看分片分配状态。 高版本的索引生命周期管理推荐使用:ILM功能。 这个是大家再熟悉不过的了。 举例: 删除数据包括:指定id删除 delete和批量删除delete_by_query(满足给定条件)。 更新操作。包括:指定id的update/upsert或者批量更新update_by_query。 这是ES的重头戏。包含但不限于: 1、支持精确匹配查询的:term、range、exists、wildcard、prefix、fuzzy等。 2、支持全文检索的:match、match_phrase、query_string、multi_match等 1、Bucketing分桶聚合 举例:最常用的terms就类似Mysql group by功能。2、Metric计算聚合 举例:类比Mysql中的: MIN, MAX, SUM 操作。3、Pipeline针对聚合结果聚合 举例:bucket_script实现类似Mysql的group by 后having的操作。 留给大家 结合 业务场景思考添加。 这里把开头提到的几个问题逐一解答一下。 实际Mysql业务中,我们一般是先验证sql没有问题,再写业务代码。 实际ES业务中,也一样,先DSL确认没有问题,再写业务代码。 写完java或者python后,打印DSL,核对是否完全一致。 不一致的地方基本就是结果和预期不一致的原因所在。 第一步:借助analyzer API分析查询语句和待查询document分词结果。 这个API的重要性,再怎么强调都不为过。 第二步:可以借助profile:true查看细节。第三步:核对match_phrase词序的原理。 6.3版本后已经支持sql,如果不会写,可以借助translate 如下API翻译一下。 不够精确,但足够参考用了,需要根据业务细节微调。 当然,还是 建议 ,从业务出发,自己写DSL。 从大往小,逐步细化排解 END 公众号 ( zhisheng )里回复 面经、ES、Flink、 Spring、Java、Kafka、监控 等关键字可以查看更多关键字对应的文章 1、《从0到1学习Flink》—— Apache Flink 介绍 2、《从0到1学习Flink》—— Mac 上搭建 Flink 1.6.0 环境并构建运行简单程序入门 3、《从0到1学习Flink》—— Flink 配置文件详解 4、《从0到1学习Flink》—— Data Source 介绍 5、《从0到1学习Flink》—— 如何自定义 Data Source ? 6、《从0到1学习Flink》—— Data Sink 介绍 7、《从0到1学习Flink》—— 如何自定义 Data Sink ? 8、《从0到1学习Flink》—— Flink Data transformation(转换) 9、《从0到1学习Flink》—— 介绍 Flink 中的 Stream Windows 10、《从0到1学习Flink》—— Flink 中的几种 Time 详解 11、《从0到1学习Flink》—— Flink 读取 Kafka 数据写入到 ElasticSearch 12、《从0到1学习Flink》—— Flink 项目如何运行? 13、《从0到1学习Flink》—— Flink 读取 Kafka 数据写入到 Kafka 14、《从0到1学习Flink》—— Flink JobManager 高可用性配置 15、《从0到1学习Flink》—— Flink parallelism 和 Slot 介绍 16、《从0到1学习Flink》—— Flink 读取 Kafka 数据批量写入到 MySQL 17、《从0到1学习Flink》—— Flink 读取 Kafka 数据写入到 RabbitMQ 18、《从0到1学习Flink》—— 你上传的 jar 包藏到哪里去了 19、大数据“重磅炸弹”——实时计算框架 Flink 20、《Flink 源码解析》—— 源码编译运行 21、为什么说流处理即未来? 22、OPPO数据中台之基石:基于Flink SQL构建实数据仓库 23、流计算框架 Flink 与 Storm 的性能对比 24、Flink状态管理和容错机制介绍 25、原理解析 | Apache Flink 结合 Kafka 构建端到端的 Exactly-Once 处理 26、Apache Flink 是如何管理好内存的? 27、《从0到1学习Flink》——Flink 中这样管理配置,你知道? 28、《从0到1学习Flink》——Flink 不可以连续 Split(分流)? 29、Flink 从0到1学习—— 分享四本 Flink 的书和二十多篇 Paper 论文 30 、360深度实践:Flink与Storm协议级对比 31、Apache Flink 1.9 重大特性提前解读 32、如何基于Flink+TensorFlow打造实时智能异常检测平台?只看这一篇就够了 33、美团点评基于 Flink 的实时数仓建设实践 34、Flink 灵魂两百问,这谁顶得住? 35、一文搞懂 Flink 的 Exactly Once 和 At Least Once 36、你公司到底需不需要引入实时计算引擎?

ElasticSearch分页方案

"浅"分页是最简单的分页方案。es会根据查询条件在每一个DataNode分片中取出from+size条文档,然后在MasterNode中聚合、排序,再截取size-from的文档返回给调用方。当页数越靠后,也就是from+size越大,es需要读取的数据也就是越大,聚合和排序的时候处理的数据量也越大,此时会加大服务器CPU和内存的消耗。 其中,from定义了目标数据的偏移值,size定义当前返回的数目。默认from为0,size为10,即所有的查询默认仅仅返回前10条数据。 在这里有必要了解一下from/size的原理: 因为es是基于分片的,假设有5个分片,from=100,size=10。则会根据排序规则从5个分片中各取回100条数据数据,然后汇总成500条数据后选择最后面的10条数据。 做过测试,越往后的分页,执行的效率越低。总体上会随着from的增加,消耗时间也会增加。而且数据量越大,就越明显! from+size查询在10000-50000条数据(1000到5000页)以内的时候还是可以的,但是如果数据过多的话,就会出现深分页问题。 为了解决上面的问题,elasticsearch提出了一个scroll滚动的方式。 scroll 类似于sql中的cursor,使用scroll,每次只能获取一页的内容,然后会返回一个scroll_id。根据返回的这个scroll_id可以不断地获取下一页的内容,所以scroll并不适用于有跳页的情景。 scroll=5m表示设置scroll_id保留5分钟可用。 使用scroll必须要将from设置为0。 size决定后面每次调用_search搜索返回的数量 然后我们可以通过数据返回的_scroll_id读取下一页内容,每次请求将会读取下10条数据,直到数据读取完毕或者scroll_id保留时间截止: 注意:请求的接口不再使用索引名了,而是 _search/scroll,其中GET和POST方法都可以使用。 scroll删除 根据官方文档的说法,scroll的搜索上下文会在scroll的保留时间截止后自动清除,但是我们知道scroll是非常消耗资源的,所以一个建议就是当不需要了scroll数据的时候,尽可能快的把scroll_id显式删除掉。 清除指定的scroll_id: DELETE _search/scroll/DnF1ZXJ5VGhlbkZldGNo..... 清除所有的scroll: DELETE _search/scroll/_all scroll 的方式,官方的建议不用于实时的请求(一般用于数据导出),因为每一个 scroll_id 不仅会占用大量的资源,而且会生成历史快照,对于数据的变更不会反映到快照上。 search_after 分页的方式是根据上一页的最后一条数据来确定下一页的位置,同时在分页请求的过程中,如果有索引数据的增删改查,这些变更也会实时的反映到游标上。但是需要注意,因为每一页的数据依赖于上一页最后一条数据,所以无法跳页请求。 为了找到每一页最后一条数据,每个文档必须有一个全局唯一值,官方推荐使用 _uid 作为全局唯一值,其实使用业务层的 id 也可以。 使用search_after必须要设置from=0。 这里我使用timestamp和_id作为唯一值排序。 我们在返回的最后一条数据里拿到sort属性的值传入到search_after。 使用sort返回的值搜索下一页: 4:修改默认分页限制值10000 可以使用下面的方式来改变ES默认深度分页的index.max_result_window 最大窗口值 curl -XPUT http://127.0.0.1:9200/my_index/_settings -d "{ "index" : { "max_result_window" : 500000}}" 其中my_index为要修改的index名,500000为要调整的新的窗口数。将该窗口调整后,便可以解决无法获取到10000条后数据的问题。 注意事项 通过上述的方式解决了我们的问题,但也引入了另一个需要我们注意的问题,窗口值调大了后,虽然请求到分页的数据条数更多了,但它是用牺牲更多的服务器的内存、CPU资源来换取的。要考虑业务场景中过大的分页请求,是否会造成集群服务的OutOfMemory问题。 修改最大限制值之后确实可以使from+size查询到更后面页的数据,但是每次查询得到的总数量最大任然是10000,要想获取大于1万的查询数据量,可以分两步查询,第一步使用scroll查询获取总数据量;第二部使用from+size查询每页的数据,并设置分页。这样即解决了from+size无法查询10000之后的数据,也解决了scroll无法跳页的问题。 使用scroll可能遇到的问题: Caused by: org.elasticsearch.ElasticsearchException: Trying to create too many scroll contexts. Must be less than or equal to: [500]. This limit can be set by changing the [search.max_open_scroll_context] setting. 这个报错是从es的日志文件中查出来的,大致意思是:尝试创建更多的scroll对象失败了,scroll对象总数量应该控制在500以内。可修改search.max_open_scroll_context的值来改变500这个阈值。 原因:通过scroll 深分页可知道,es服务端会在内存中生成一个scroll_id对象,并会为该值指定过期时间,翻页的时候使用scroll_id来获取下一页的数据。默认情况下,一个实例下面仅可以创建最多500个scroll上下文对象,也就是500个scroll_id。报此错误的原因就是创建scroll上下文对象失败,因为当前已经存在500个这样的对象了。 解决办法: 1:通过观察可以发现,即使不做任何的处理,过一会就又可以发起scroll请求了,这是因为时间超过了scroll生命周期时间,scroll对象自己死掉了一些。 2:按照提示说的,修改search.max_open_scroll_context的值 put http://{{es-host}}/_cluster/settings { } [图片上传失败...(image-4dc354-1583253824871)] 3:在使用完scroll_id之后立即调用删除接口,删除该scroll对象 删除单个scroll DELETE http://{{es-host}}/_search/scroll { } 删除所有scroll delete http://{{es-host}}/_search/scroll/_all

企业级开源搜索引擎:Elasticsearch

Elasticsearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene基础之上。但是Lucene只是一个工具类库,且接口较为复杂。你必须先理解搜索引擎的工作原理,才能有效利用Lucene。ElasticSearch通过隐藏Lucene背后复杂的搜索理论知识,预设了搜索引擎默认的参数,只需要最少的理解,就能快速搭建出搜索引擎,开箱即用。 1. 索引(Index) ElasticSearch的Index类似于关系型数据库的Database,用来存储各种类型的文档。一个索引应该是因共同的特性被分组到一起的文档集合。 以Google作为栗子,我们可以把Index理解为Google所抓取网页(文档)存储的地方。 2. 类型(Type) Type类似于关系型数据库的Table,用来存储相似文档的地方。 以Google作为栗子,我们可以把网页、图片、视频等不同类型的搜索,存放在不同的Type里面。 3. 文档(Document) Document类似于关系型数据库里面的Row,存储具体的一个对象。 ElasticSearch的文档是以JSON格式存储的。形如: 以Google作为栗子,一个网页就是一个文档。 4. 字段(Field) Field类似于关系型数据库的Column,存储某一个具体的属性。 以Google作为栗子,网页的标题(Title)就是一个字段。 注意: ElasticSearch的Type与传统关系型数据库的Table不一样的地方在于:同一个Index下的Type,名称相同的Field,类型要保持一致。 以Google作为栗子,当Google把网页类型的文档和图片类型的文档都存储在同一个Index下面时,假设网页和图片都有一个Title属性,那么在同一个Index下面,这两个属性的类型必须保持一致,比如必须都是String类型的。因为ElasticSearch更倾向于存储同构类型的文档。 下载安装包,并解压到/opt目录下 编辑elasticsearch.yml文件 vim/opt/elasticsearch-2.4.4/config/elasticsearch.yml 启动项目 安装head插件 打开浏览器访问页面:http://192.168.204.151:9200/_plugin/head/

elasticsearch的自动发现节点机制是怎么实现的,原理是怎样

1、Gossip 是一种去中心化、容错而又最终一致性的绝妙算法, 其收敛性不但得到证明还具有指数级的收敛速度。2、使用 Gossip 的系统可以很容易的把 Server 扩展到更多的节点, 满足弹性扩展轻而易举。3、唯一的缺点是收敛是最终一致性, 不适应那些强一致性的场景, 比如 2PC。

Elasticsearch 倒排索引

之前我们已经了解过,Elasticsearch 是一个基于 Lucene 实现的分布式全文检索引擎,其实 Elasticsearch 倒排索引就是 Lucene 的倒排索引。数据检索是 ES 的一项核心功能,它的底层实现也是离不开倒排索引的,通过倒排索引技术可以提高数据的检索效率,理解倒排索引的原理很重要。 那什么是倒排索引,我们该如何理解它呢? 我们能进行数据检索的前提条件是,已经创建好了索引库,并给里边添加了文档数据。所以我们可以按照 创建索引库 、 添加文档 、 数据检索 这个顺序来认识倒排索引。 首先是创建索引库,我们之前已经安装好了 IK 分词器,这里我们创建一个 test 索引,它只有一个 content 字段,添加文档时字段的分词模式是 ik_max_word ,检索时关键字的分词模式是 ik_smart : 字段的分词模式会影响最终生成的倒排索引。不了解分词器的可以参考 Elasticsearch 中文分词器插件 。 创建好了索引,我们来添加一条文档数据: 添加文档数据时,ES 会根据字段的分词模式将字段的值拆分成多个 词条 (Term)(或者称作词项),创建索引库时我们指定了 content 字段分词模式为 ik_max_word ,则会生成如下的词条: 接下来就是建立倒排索引了,在这之前我们先了解两个概念 词条字典 (Term Dictionary)、 倒排列表 (Posting List): ES 的倒排索引就是由 词条字典 和 倒排列表 两部分组成的。如下就是一个简易版的倒排索引,倒排列表项只有词条对应的文档 id: 一个词条对应一个倒排索引项。ES 会给每个字段都建立一个倒排索引。 我们再添加一条文档数据: 根据上边的原理,最终 content 字段的倒排索引会被更新成如下结构: 前边已经添加了文档数据,同时也生成了倒排索引,接下来就是检索数据了。在这之前还有一个知识点需要了解,那就是 词条索引 (Term Index),词条索引一般只存储各个 词条 的前缀(第一个字符),它和字条字典对应。之所以需要词条索引,是因为 词条字典 一般都很大,不适合保存在内存中而是存储在磁盘中,检索数据时根据关键字的前缀匹配到词条索引,再根据词条索引定位到关键字在倒排索引的词条字典中大致的位置,然后进一步在词条字典中通过二分查找定位到具体的词条,这样避免了直接遍历词条字典来点位词条,大幅减少了磁盘的读取,提高了效率。 定位到了词条,就能在倒排索引中找到对应的倒排列表项,进而就知道了对应的文档 id,有了文档 id 自然也就找到了文档,这也就是 ES 检索数据大致的原理。 如下我们查询包含 十二 的文档数据: 由于我们创建索引库时指定了检索时关键字的分词模式是 ik_smart ,所以 十二 被分词后还是 十二 ,再结合上边的原理,以 十二 为关键字最终可以查询到 id 为 1、2 的文档数据:这篇最好能结合 Elasticsearch 中文分词器插件 一起看,这样能更容易理解些。 新手上路,不合理的地方还望大佬指点。

elasticsearch索引主要实现方式

Elasticsearch是什么?Elasticsearch是位于ElasticStack核心的分布式搜索和分析引擎。Logstash和Beats有助于收集、聚合和丰富您的数据并将其存储在Elasticsearch中。Kibana使您能够以交互方式探索、可视化和分享对数据的见解,并管理。Elasticsearch是一个分布式文档存储。Elasticsearch存储的是序列化为JSON文档的复杂数据结构,而不是以列行数据的形式存储信息。当集群中有多个Elasticsearch节点时,存储的文档分布在整个集群中,可以立即从任何节点访问。Elasticsearch是由Shay Banon发起的一个开源搜索服务器项目,2010年2月发布。迄今,该项目已发展成为搜索和数据分析解决方案领域的主要一员,广泛应用于声名卓著或鲜为人知的搜索应用程序。Elasticsearch是一个高度可扩展的开源全文搜索和分析引擎。它可以在很短的时间内存储,搜索和分析大量的数据。它通常作为具有复杂搜索场景情况下的核心发动机。搜索引擎,不支持join表等操作。主要用于全文检索。不适合做数据库。如何选择合适的数据库解决方案?1、如果有强大的技术团队,关系型和非关系型数据库都可选择。一般来讲,非关系型数据库需要更多管理维护的时间。2、如果你要储存会话信息,用户配置信息,购物车数据,建议使用NoSQL数据库; 不过90%的企业或个人,首选数据库都是MySQL数据库。3、(一)、Access (二)SQL Server (三)MySQL,Access是一种桌面数据库,只适合数据量少的应用,在处理少量数据和单机访问的数据库时是很好的,效率也很高。但是它的同时访问客户端不能多于4个。4、虽然把上面的架构全部组合在一起可以形成一个强大的高可用,高负载的数据库系统,但是架构选择合适才是最重要的。 混合架构虽然能够解决所有的场景的问题,但是也会面临更多的挑战,你以为的完美架构,背后其实有着更多的坑。5、例如,如果你需要的是数据分析仓库,关系数据库可能不是一个适合的选择;如果你处理事务的应用要求严格的数据完整性和一致性,就不要考虑NoSQL了。不要重新发明轮子 在过去的数十年,开源数据库技术迅速发展壮大。6、本文首先讨论了基于第三范式的数据库表的基本设计,着重论述了建立主键和索引的策略和方案,然后从数据库表的扩展设计和库表对象的放置等角度概述了数据库管理系统的优化方案。ElasticSearch倒排索引及其原理1、倒排索引采用Immutable Design,一旦生成,不可更改。Segment写入磁盘的过程相对耗时,所以借助文件系统缓存,Refresh时,先将Segment写入文件缓存中,以开放查询。2、之前我们已经了解过,Elasticsearch 是一个基于 Lucene 实现的分布式全文检索引擎,其实 Elasticsearch 倒排索引就是 Lucene 的倒排索引。3、所谓的倒排索引,就是把你的数据内容先分词,每句话分成一个一个的关键词,然后记录好每一个关键词对应出现在了哪些 id 标识的数据。4、可以将对es的操作记录下来,来确保当出现故障的时候,已经落地到磁盘的数据不会丢失,并在重启的时候可以从操作记录中将数据恢复过来。5、Elasticsearch中使用一种称为倒排索引的结构,适用于快速的全文搜索。一个倒排索引由文档中所有不能重复词的列表构成,对于其中每个词,有一个包含它的文档列表。elasticsearch-倒排索引原理1、倒排索引采用Immutable Design,一旦生成,不可更改。Segment写入磁盘的过程相对耗时,所以借助文件系统缓存,Refresh时,先将Segment写入文件缓存中,以开放查询。2、Elasticsearch中使用一种称为倒排索引的结构,适用于快速的全文搜索。一个倒排索引由文档中所有不能重复词的列表构成,对于其中每个词,有一个包含它的文档列表。3、elasticsearch提供了translog来记录这些操作,结合os cached segments数据定时落盘来实现数据可靠性保证(flush)。文档被添加到buffer同时追加到translog:进行 refresh 操作,清空buffer,文档可被搜索但尚未 flush 到磁盘。4、如果Elasticsearch密钥库受密码保护,则必须先输入密钥库密码,然后才能为内置用户设置密码。 为弹性用户设置密码后,引导密码不再有效,无法使用该命令。在某些情况下,分片副本的Lucene索引或事务日志可能会损坏。5、Elasticsearch 的查询原理是将查询的关键词与倒排索引中的词条进行匹配,查询的关键词与倒排索引中的词条必须完全相同视为匹配,否则不匹配。 这意味着在插入文档时是否进行分析和查询时是否进行分析将产生非常不同的结果。6、财务平台亿级数据量毫秒级查询优化之elasticsearch原理解析_wang123459的博客-CSDN博客_elasticsearch 查询优化 mysql底层B-tree 支持矮胖,高胖的时候就很难受,说白了就是数据量多会增加IO操作。ES底层倒排索引。Elasticsearch一般情况下如果es服务正常启动,可以通过接口的方式获取elasticsearch版本信息:curlhttp://10.1:9200 上述命令可以得到elasticsearch的服务状态和其他信息包括版本号。Elasticsearch 是位于 Elastic Stack 核心的分布式搜索和分析引擎。Logstash 和 Beats 有助于收集、聚合和丰富您的数据并将其存储在 Elasticsearch 中。ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。Elasticsearch架构简单介绍如下。索引 索引(index)是Elasticsearch对逻辑数据的逻辑存储,所以它可以分为更小的部分。你可以把索引看成关系型数据库的表。然而,索引的结构是为快速有效的全文索引准备的,特别是它不存储原始值。如何用elasticsearch5.2实现全文索引1、安装ik分词器到elasticsearch很简单,它有个插件目录analysis-ik,和一个配置目录ik, 分别拷贝到plugins和conf目录就可以了。2、ES使用倒序索引来加速全文索引。一个倒序索引由两部分组成:如果我们想要搜索 quick brown,我们仅仅只需要找每一个term出现的文档即可。如下图:每一个文档都匹配到了,但是第一个比第二个要匹配的多。3、每次将文本类型数据插入Elasticsearch索引时,都会对其进行分析,然后存储在反向索引中。根据分析器的配置方式,这会影响您的搜索功能,因为分析器也适用于全文搜索。

从查询重写角度理解elasticsearch的高亮原理

一、高亮的一些问题 elasticsearch提供了三种高亮方式,前面我们已经简单的了解了elasticsearch的高亮原理; 高亮处理跟实际使用查询类型有十分紧密的关系,其中主要的一点就是muti term 查询的重写,例如wildcard、prefix等,由于查询本身和高亮都涉及到查询语句的重写,如果两者之间的重写机制不同,那么就可能会碰到以下情况 相同的查询语句, 使用unified和fvh得到的高亮结果是不同的,甚至fvh Highlighter无任何高亮信息返回; 二、数据环境 elasticsearch 8.0 三、muti term查询重写简介 所谓muti term查询就是查询中并不是明确的关键字,而是需要elasticsearch重写查询语句,进一步明确关键字;以下查询会涉及到muti term查询重写; 以上查询都支持rewrite参数,最终将查询重写为bool查询或者bitset; 查询重写主要影响以下几方面 重写需要抓取哪些关键字以及抓取的数量; 抓取关键字的相关性计算方式; 查询重写支持以下参数选项 constant_score,默认值,如果需要抓取的关键字比较少,则重写为bool查询,否则抓取所有的关键字并重写为bitset;直接使用boost参数作为文档score,一般term level的查询的boost默认值为1; constant_score_boolean,将查询重写为bool查询,并使用boost参数作为文档的score,受到indices.query.bool.max_clause_count 限制,所以默认最多抓取1024个关键字; scoring_boolean,将查询重写为bool查询,并计算文档的相对权重,受到indices.query.bool.max_clause_count 限制,所以默认最多抓取1024个关键字; top_terms_blended_freqs_N,抓取得分最高的前N个关键字,并将查询重写为bool查询;此选项不受indices.query.bool.max_clause_count 限制;选择命中文档的所有关键字中权重最大的作为文档的score; top_terms_boost_N,抓取得分最高的前N个关键字,并将查询重写为bool查询;此选项不受indices.query.bool.max_clause_count 限制;直接使用boost作为文档的score; top_terms_N,抓取得分最高的前N个关键字,并将查询重写为bool查询;此选项不受indices.query.bool.max_clause_count 限制;计算命中文档的相对权重作为评分; 三、wildcard查询重写分析 我们通过elasticsearch来查看一下以下查询语句的重写逻辑; 通过查询使用的字段映射类型构建WildCardQuery,并使用查询语句中配置的rewrite对应的MultiTermQuery.RewriteMethod; 根据查询语句中配置的rewrite,查找对应的MultiTermQuery.RewriteMethod,由于我们没有在wildcard查询语句中设置rewrite参数,这里直接返回null; WildCardQuery继承MultiTermQuery,直接调用rewrite方法进行重写,由于我们没有在wildcard查询语句中设置rewrite参数,这里直接使用默认的CONSTANT_SCORE_REWRITE; 可以看到CONSTANT_SCORE_REWRITE是直接使用的匿名类,rewrite方法返回的是MultiTermQueryConstantScoreWrapper的实例; 在以下方法中,首先会得到查询字段对应的所有term集合; 然后通过 query.getTermsEnum获取跟查询匹配的所有term集合; 最后根据collectTerms调用的返回值决定是否构建bool查询还是bit set; 调用collectTerms默认只会提取查询命中的16个关键字; 通过以上分析wildcard查询默认情况下,会提取字段中所有命中查询的关键字; 四、fvh Highlighter中wildcard的查询重写 在muti term query中,提取查询关键字是高亮逻辑一个很重要的步骤; 我们使用以下高亮语句,分析以下高亮中提取查询关键字过程中的查询重写; 默认情况下只有匹配的字段才会进行高亮,这里构建CustomFieldQuery; 通过调用flatten方法得到重写之后的flatQueries,然后将每个提取的关键字重写为BoostQuery; 由于WildCardQuery是MultiTermQuery的子类,所以在flatten方法中最终直接使用MultiTermQuery.TopTermsScoringBooleanQueryRewrite进行查询重写,这里的top N是MAX_MTQ_TERMS = 1024; 这里首先计算设置的size和getMaxSize(默认值1024, IndexSearcher.getMaxClauseCount())计算最终提取的命中关键字数量,这里最终是1024个; 这里省略了传入collectTerms的TermCollector匿名子类的实现,其余最终提取关键字数量有关; 这里首先获取查询字段对应的所有term集合,然后获取所有的与查询匹配的term集合,最终通过传入的collector提取关键字; 这里通过控制最终提取匹配查询的关键字的数量不超过maxSize; 通过以上分析可以看到,fvh Highlighter对multi term query的重写,直接使用MultiTermQuery.TopTermsScoringBooleanQueryRewrite,并限制只能最多提取查询关键字1024个; 五、重写可能导致的高亮问题原因分析 经过以上对查询和高亮的重写过程分析可以知道,默认情况下 query阶段提取的是命中查询的所有的关键字,具体行为可以通过rewrite参数进行定制; Highlight阶段提取的是命中查询的关键字中的前1024个,具体行为不受rewrite参数的控制; 如果查询的字段是大文本字段,导致字段的关键字很多,就可能会出现查询命中的文档的关键字不在前1024个里边,从而导致明明匹配了文档,但是却没有返回高亮信息; 六、解决方案

ElasticSearch倒排索引及其原理

倒排索引采用Immutable Design,一旦生成,不可更改。 Segment写入磁盘的过程相对耗时,所以借助文件系统缓存,Refresh时,先将Segment写入文件缓存中,以开放查询。但为了保证数据不会丢失,所以在创建索引时,会同时写Tansaction Log,类似操作日志。 在ES进行Refresh时,Index Buffer会被清空,Transaction Log不会清空。 Flush操作: Flush触发条件: 随着索引的不断创建,Segments文件会越来越多。ES会自动进行merge操作,将多个segments文件合并,以提高查询效率。但Merge是很重的操作,对磁盘有频繁IO操作,会对系统性能有影响。 除此之外,我们还可以通过api强制merge: 我们还可以通过配置refresh的频率(refresh_interval),来适当减少Segments产生的数量。

Elasticsearch -- 集群内的原理

首先理解三个概念 1)集群内的节点共同承担数据和负载的压力。 2)当有节点加入或者移出集群时,集群会重新平均分配所有的数据。 1)主节点负责集群内的所有变更(如增加、删除节点,增加、删除索引等) 2)主节点并不需要涉及到文档级别的变更和搜索 3)任何节点都可以成为主节点 4)每个节点都知道任意文档所处的位置,当用户请求时无论请求哪个节点都能直接将请求转发给实际存储文档的节点 5)无论用户请求哪个节点,它都能负责从个个包含我们所需文档的各个节点收集回数据并发给客户端,对这一切都是透明的 1)一个分片是一个底层的 工作单元 2)它本身就是一个完整的搜索引擎 3)应用程序是直接与索引而不是与分片进行交互 4)Elasticsearch 是利用分片将数据分发到集群内各处的 5)分片是数据的容器,文档保存在分片内 6)分片又被分配到集群内的各个节点里 7) 当你的集群规模扩大或者缩小时, Elasticsearch 会自动的在各节点中迁移分片,使得数据仍然均匀分布在集群里。 8)一个分片可以是 主分片 或者 副本分片 9)索引内任意一个文档都归属于一个主分片,所以主分片的数目决定着索引能够保存的最大数据量 10)一个副本分片只是一个主分片的拷贝。副本分片作为硬件故障时保护数据不丢失的冗余备份,并为搜索和返回文档等读操作提供服务 11)在索引建立的时候就已经确定了主分片数,但是副本分片数可以随时修改 其中 status 字段表示当前集群的健康状态(是否正常工作),有三种颜色

Elasticsearch之存储原理

倒排索引被写入磁盘后是不可变的,ES解决不变性和更新索引的方式是使用多个索引,利用新增的索引来反映修改,在查询时从旧的到新的依次查询,最后来一个结果合并。 ES底层是基于Lucene,最核心的概念就是 Segment(段) ,每个段本身就是一个倒排索引。 ES中的Index由多个段的集合和 commit point(提交点) 文件组成。 提交点文件中有一个列表存放着所有已知的段,下面是一个带有1个提交点和3个段的Index示意图: Doc会先被搜集到内存中的Buffer内,这个时候还无法被搜索到,如下图所示: 每隔一段时间,会将buffer提交,在flush磁盘后打开新段使得搜索可见,详细过程如下: 下面展示了这个过程完成后的段和提交点的状态: 通过这种方式,可以使得新文档从被索引到可被搜索间的时间间隔在数分钟,但是还不够快。因为磁盘需要 fsync ,这个就成为性能瓶颈。我们前面提到过Doc会先被从buffer刷入段写入文件系统缓存(很快),那么就自然想到在这个阶段就让文档对搜索可见,随后再被刷入磁盘(较慢)。 Lucene支持对新段写入和打开,可以使文档在没有完全刷入硬盘的状态下就能对搜索可见,而且是一个开销较小的操作,可以频繁进行。 下面是一个已经将Docs刷入段,但还没有完全提交的示意图: 我们可以看到,新段虽然还没有被完全提交,但是已经对搜索可见了。 引入refresh操作的目的是提高ES的实时性,使添加文档尽可能快的被搜索到,同时又避免频繁fsync带来性能开销,依靠的就是文件系统缓存OS cache里缓存的文件可以被打开(open/reopen)和读取,而这个os cache实际是一块内存区域,而非磁盘,所以操作是很快的,这就是ES被称为近实时搜索的原因。 refresh默认执行的间隔是1秒,可以使用 refreshAPI 进行手动操作,但一般不建议这么做。还可以通过合理设置 refresh_interval 在近实时搜索和索引速度间做权衡。 index segment刷入到os cache后就可以打开供查询,这个操作是有潜在风险的,因为os cache中的数据有可能在意外的故障中丢失,而此时数据必备并未刷入到os disk,此时数据丢失将是不可逆的,这个时候就需要一种机制,可以将对es的操作记录下来,来确保当出现故障的时候,已经落地到磁盘的数据不会丢失,并在重启的时候可以从操作记录中将数据恢复过来。elasticsearch提供了translog来记录这些操作,结合os cached segments数据定时落盘来实现数据可靠性保证(flush)。 文档被添加到buffer同时追加到translog: 进行 refresh 操作,清空buffer,文档可被搜索但尚未 flush 到磁盘。translog不会清空: 每隔一段时间(例如translog变得太大),index会被flush到磁盘,新的translog文件被创建,commit执行结束后,会发生以下事件: 下面示意图展示了这个状态: translog记录的是已经 在内存生成(segments)并存储到os cache但是还没写到磁盘的那些索引操作 (注意,有一种解释说,添加到buffer中但是没有被存入segment中的数据没有被记录到translog中,这依赖于写translog的时机,不同版本可能有变化,不影响理解),此时这些新写入的数据可以被搜索到,但是当节点挂掉后这些未来得及落入磁盘的数据就会丢失,可以通过trangslog恢复。 当然translog本身也是磁盘文件,频繁的写入磁盘会带来巨大的IO开销,因此对translog的追加写入操作的同样操作的是os cache,因此也需要定时落盘(fsync)。translog落盘的时间间隔直接决定了ES的可靠性,因为宕机可能导致这个时间间隔内所有的ES操作既没有生成segment磁盘文件,又没有记录到Translog磁盘文件中,导致这期间的所有操作都丢失且无法恢复。 translog的fsync是ES在后台自动执行的,默认是每5秒钟主动进行一次translog fsync,或者当translog文件大小大于512MB主动进行一次fsync,对应的配置是 index.translog.flush_threshold_period 和 index.translog.flush_threshold_size 。 当 Elasticsearch 启动的时候, 它会从磁盘中使用最后一个提交点去恢复已知的段,并且会重放 translog 中所有在最后一次提交后发生的变更操作。 translog 也被用来提供实时 CRUD 。当你试着通过ID来RUD一个Doc,它会在从相关的段检索之前先检查 translog 中最新的变更。 默认 translog 是每5秒或是每次请求完成后被 fsync 到磁盘(在主分片和副本分片都会)。也就是说,如果你发起一个index, delete, update, bulk请求写入translog并被fsync到主分片和副本分片的磁盘前不会反回200状态。 这样会带来一些性能损失,可以通过设为异步fsync,但是必须接受由此带来的丢失少量数据的风险: flush 就是执行commit清空、干掉老translog的过程。默认每个分片30分钟或者是translog过于大的时候自动flush一次。可以通过flush API手动触发,但是只会在重启节点或关闭某个索引的时候这样做,因为这可以让未来ES恢复的速度更快(translog文件更小)。 满足下列条件之一就会触发冲刷操作: 整体流程: 删除一个ES文档不会立即从磁盘上移除,它只是被标记成已删除。因为段是不可变的,所以文档既不能从旧的段中移除,旧的段也不能更新以反映文档最新的版本。 ES的做法是,每一个提交点包括一个 .del 文件(还包括新段),包含了段上已经被标记为删除状态的文档。所以,当一个文档被做删除操作,实际上只是在 .del 文件中将该文档标记为删除,依然会在查询时被匹配到,只不过在最终返回结果之前会被从结果中删除。ES将会在用户之后添加更多索引的时候,在后台进行要删除内容的清理。 文档的更新操作和删除是类似的:当一个文档被更新,旧版本的文档被标记为删除,新版本的文档在新的段中索引。 该文档的不同版本都会匹配一个查询,但是较旧的版本会从结果中删除。 通过每秒自动刷新创建新的段,用不了多久段的数量就爆炸了,每个段消费大量文件句柄,内存,cpu资源。更重要的是,每次搜索请求都需要依次检查每个段。段越多,查询越慢。 ES通过后台合并段解决这个问题。ES利用段合并的时机来真正从文件系统删除那些version较老或者是被标记为删除的文档。被删除的文档(或者是version较老的)不会再被合并到新的更大的段中。 可见,段合并主要有两个目的: ES对一个不断有数据写入的索引处理流程如下: 合并过程如图: 从上图可以看到,段合并之前,旧有的Commit和没Commit的小段皆可被搜索。 段合并后的操作: 合并完成后新的段可被搜索,旧的段被删除,如下图所示: 注意 :段合并过程虽然看起来很爽,但是大段的合并可能会占用大量的IO和CPU,如果不加以控制,可能会大大降低搜索性能。段合并的optimize API 不是非常特殊的情况下千万不要使用,默认策略已经足够好了。不恰当的使用可能会将你机器的资源全部耗尽在段合并上,导致无法搜索、无法响应。

分布式搜索引擎elasticsearch的架构原理

分布式搜索引擎:把大量的索引数据拆散成多块,每台机器放一部分,然 后利用多台机器对分散之后的数据进行搜索,所有操作全部是分布在多台机器上进行,形成了 完整的分布式的架构。 近实时,有两层意思: 集群包含多个节点,每个节点属于哪个集群都是通过一个配置来决定的, Node 是集群中的一个节点,节点也有一个名称,默认是随机分配的。默认节点会去加入一个名 称为 elasticsearch 的集群。如果直接启动一堆节点,那么它们会自动组成一个elasticsearch 集群,当然一个节点也可以组成 elasticsearch 集群。 文档是 es 中最小的数据单元,一个 document 可以是1条客户数据、1条商品分类数据、1条 订单数据,通常用json 数据结构来表示。每个 index 下的 type,都可以存储多条 document。 1个 document 里面有多个 field,每个 field 就是1个数据字段。 es 集群多个节点,会自动选举1个节点为 master 节点,这个 master 节点其实就是干一些管理 的工作的,比如维护索引元数据、负责切换 primary shard 和 replica shard 身份等。要是 master 节点宕机了,那么会重新选举1个节点为 master 节点。 如果是非 master节点宕机了,那么会由 master 节点,让那个宕机节点上的 primary shard 的身 份转移到其他机器上的 replica shard。接着你要是修复了那个宕机机器,重启了之后,master 节点会控制将缺失的 replica shard 分配过去,同步后续修改的数据之类的,让集群恢复正常。 说得更简单1点,就是说如果某个非 master 节点宕机了,那么此节点上的 primary shard 不就 没了。那好,master 会让 primary shard 对应的 replica shard(在其他机器上)切换为 primary shard。如果宕机的机器修复了,修复后的节点也不再是 primary shard,而是 replica shard。 索引可以拆分成多个 shard ,每个 shard 存储部分数据。拆分多个 shard是有好处的,一是支持横向扩展,比如你数据量是 3T,3 个 shard,每个 shard 就 1T 的数据, 若现在数据量增加到 4T,怎么扩展,很简单,重新建1个有 4 个 shard 的索引,将数据导进 去;二是提高性能,数据分布在多个 shard,即多台服务器上,所有的操作,都会在多台机器 上并行分布式执行,提高了吞吐量和性能。 接着就是这个 shard 的数据实际是有多个备份,就是说每个 shard 都有1个 primary shard ,负责写入数据,但是还有多个 replica shard 。 primary shard 写入数据之后, 会将数据同步到其他几个 replica shard上去。 通过这个 replica 的方案,每个 shard 的数据都有多个备份,如果某个机器宕机了,没关系啊, 还有别的数据副本在别的机器上,这样子就高可用了。 总结:分布式就是两点,1.通过shard切片实现横向扩展;2.通过replica副本机制,实现高可用 基本概念 写数据过程:客户端通过hash选择一个node发送请求,这个node被称做coordinating node(协调节点),协调节点对docmount进行路由,将请求转发给到对应的primary shard,primary shard 处理请求,将数据同步到所有的replica shard,此时协调节点,发现primary shard 和所有的replica shard都处理完之后,就反馈给客户端。 客户端发送get请求到任意一个node节点,然后这个节点就称为协调节点,协调节点对document进行路由,将请求转发到对应的node,此时会使用随机轮询算法,在primary shard 和replica shard中随机选择一个,让读取请求负载均衡,接收请求的node返回document给协调节点,协调节点,返回document给到客户端 es最强大的是做全文检索,就是比如你有三条数据 1.java真好玩儿啊 2.java好难学啊 3.j2ee特别牛 你根据java关键词来搜索,将包含java的document给搜索出来。 更新/删除数据过程,首先还是write、merge操作,然后flush过程中: 1、write过程和上面的一致; 2、refresh过程有点区别 所谓的倒排索引,就是把你的数据内容先分词,每句话分成一个一个的关键词,然后记录好每一个关键词对应出现在了哪些 id 标识的数据。 然后你可以从其他地根据这个 id 找到对应的数据就可以了,这个就是倒排索引的数据格式 以及搜索的方式,这种利倒排索引查找数据的式,也被称之为全文检索。 Inverted Index就是我们常见的倒排索引, 主要包括两部分: 一个有序的数据字典 Dictionary(包括单词 Term 和它出现的频率)。 与单词 Term 对应的 Postings(即存在这个单词的文件) 当我们搜索的时候,首先将搜索的内容分解,然后在字典里找到对应 Term,从而查找到与搜索相关的文件内容。 本质上,Stored Fields 是一个简单的键值对 key-value。默认情况下,Stored Fields是为false的,ElasticSearch 会存储整个文件的 JSON source。 哪些情形下需要显式的指定store属性呢?大多数情况并不是必须的。从_source中获取值是快速而且高效的。如果你的文档长度很长,存储 _source或者从_source中获取field的代价很大,你可以显式的将某些field的store属性设置为yes。缺点如上边所说:假设你存 储了10个field,而如果想获取这10个field的值,则需要多次的io,如果从Stored Field 中获取则只需要一次,而且_source是被压缩过 的。 这个时候你可以指定一些字段store为true,这意味着这个field的数据将会被单独存储(实际上是存两份,source和 Stored Field都存了一份)。这时候,如果你要求返回field1(store:yes),es会分辨出field1已经被存储了,因此不会从_source中加载,而是从field1的存储块中加载。 Doc_values 本质上是一个序列化的 列式存储,这个结构非常适用于聚合(aggregations)、排序(Sorting)、脚本(scripts access to field)等操作。而且,这种存储方式也非常便于压缩,特别是数字类型。这样可以减少磁盘空间并且提高访问速度,ElasticSearch 可以将索引下某一个 Document Value 全部读取到内存中进行操作. Doc_values是存在磁盘的 在es中text类型字段默认只会建立倒排索引,其它几种类型在建立倒排索引的时候还会建立正排索引,当然es是支持自定义的。在这里这个正排索引其实就是Doc Value。 即上文所描述的动态索引 往 es 写的数据,实际上都写到磁盘文件里去了,查询的时候,操作系统会将磁盘文件里的数据自动缓存到 filesystem cache 中去。 es 的搜索引擎严重依赖于底层的 filesystem cache ,你如果给 filesystem cache 更多的 内存,尽量让内存可以容纳所有的 idx segment file 索引数据文件,那么你搜索的时候就 基本都是走内存的,性能会非常高。 性能差距究竟可以有多大?我们之前很多的测试和压测,如果走磁盘一般肯定上秒,搜索性能 绝对是秒级别的,1秒、5秒、10秒。但如果是走 filesystem cache ,是走纯内存的,那么一 般来说性能比走磁盘要高一个数量级,基本上就是毫秒级的,从几毫秒到几百毫秒不等。 那如何才能节约filesystem cache这部分的空间呢? 当写数据到ES时就要考虑到最小化数据,当一行数据有30几个字段,并不需要把所有的数据都写入到ES,只需要把关键的需要检索的几列写入。这样能够缓存的数据就会越多。 所以需要控制每台机器写入的数据最好小于等于或者略大于filesystem cache空间最好。 如果要搜索海量数据,可以考虑用ES+Hbase架构。用Hbase存储海量数据,然后ES搜索出doc id后,再去Hbase中根据doc id查询指定的行数据。 当每台机器写入的数据大于cache os太多时,导致太多的数据无法放入缓存,那么就可以把一部分热点数据刷入缓存中。 对于那些你觉得比较热的、经常会有人访问的数据,最好做个专门的缓存预热系统,就是 对热数据每隔一段时间,就提前访问一下,让数据进入 filesystem cache 里去。这样下 次别人访问的时候,性能肯定会好很多。 把热数据和冷数据分开,写入不同的索引里,然后确保把热索引数据刷到cache里。 在ES里最好不要用复杂的关联表的操作。当需要这样的场景时,可以在创建索引的时候,就把数据关联好。比如在mysql中需要根据关联ID查询两张表的关联数据:select A.name ,B.age from A join B where A.id = B.id,在写入ES时直接去把相关联数据放到一个document就好。 es 的分页是较坑的,为啥呢?举个例子吧,假如你每页是 10 条数据,你现在要查询第 100 页,实际上是会把每个 shard 上存储的前 1000 条数据都查到1个协调节点上,如果你有个 5 个 shard,那么就有 5000 条数据,接着协调节点对这 5000 条数据进行一些合并、处理,再获取到 最终第 100 页的 10 条数据。 分布式的,你要查第 100 页的 10 条数据,不可能说从 5 个 shard,每个 shard 就查 2 条数据, 最后到协调节点合并成 10 条数据吧?你必须得从每个 shard 都查 1000 条数据过来,然后根据 你的需求进行排序、筛选等等操作,最后再次分页,拿到里面第 100 页的数据。你翻页的时 候,翻的越深,每个 shard 返回的数据就越多,而且协调节点处理的时间越长,非常坑爹。所 以用 es 做分页的时候,你会发现越翻到后面,就越是慢。 我们之前也是遇到过这个问题,用 es 作分页,前几页就几十毫秒,翻到 10 页或者几十页的时 候,基本上就要 5~10 秒才能查出来一页数据了。 解决方案吗? 1)不允许深度分页:跟产品经理说,你系统不允许翻那么深的页,默认翻的越深,性能就越差; 2)在APP或者公众号里,通过下拉来实现分页,即下拉时获取到最新页,可以通过scroll api来实现; scroll 会1次性给你生成所有数据的1个快照,然后每次滑动向后翻页就是通过游标 scroll_id 移动获取下一页,性能会比上面说的那种分页性能要高很多很 多,基本上都是毫秒级的。 但是,唯1的缺点就是,这个适合于那种类似微博下拉翻页的,不能随意跳到任何一页的场 景。也就是说,你不能先进到第 10 页,然后去第 120 页,然后再回到第 58 页,不能随意乱跳 页。所以现在很多APP产品,都是不允许你随意翻页的,也有一些网站,做的就是你只能往 下拉,一页一页的翻。 初始化时必须指定 scroll 参数,告诉 es 要保存此次搜索的上下文多长时间。你需要确保用户不会持续不断翻页翻几个小时,否则可能因为超时而失败。 除了用 scroll api ,也可以用 search_after 来做, search_after 的思想是使用前一页的结果来帮助检索下一页的数据,显然,这种方式也不允许你随意翻页,你只能一页一页往后 翻。初始化时,需要使用一个唯1值的字段作为 sort 字段。

elasticsearch-倒排索引原理

1、倒排索引采用ImmutableDesign,一旦生成,不可更改。Segment写入磁盘的过程相对耗时,所以借助文件系统缓存,Refresh时,先将Segment写入文件缓存中,以开放查询。2、Elasticsearch中使用一种称为倒排索引的结构,适用于快速的全文搜索。一个倒排索引由文档中所有不能重复词的列表构成,对于其中每个词,有一个包含它的文档列表。3、elasticsearch提供了translog来记录这些操作,结合oscachedsegments数据定时落盘来实现数据可靠性保证(flush)。文档被添加到buffer同时追加到translog:进行refresh操作,清空buffer,文档可被搜索但尚未flush到磁盘。4、如果Elasticsearch密钥库受密码保护,则必须先输入密钥库密码,然后才能为内置用户设置密码。为弹性用户设置密码后,引导密码不再有效,无法使用该命令。在某些情况下,分片副本的Lucene索引或事务日志可能会损坏。5、Elasticsearch的查询原理是将查询的关键词与倒排索引中的词条进行匹配,查询的关键词与倒排索引中的词条必须完全相同视为匹配,否则不匹配。这意味着在插入文档时是否进行分析和查询时是否进行分析将产生非常不同的结果。6、财务平台亿级数据量毫秒级查询优化之elasticsearch原理解析_wang123459的博客-CSDN博客_elasticsearch查询优化mysql底层B-tree支持矮胖,高胖的时候就很难受,说白了就是数据量多会增加IO操作。ES底层倒排索引。

Co-researcher 是助理研究员的意思吗

可以翻译成助理研究员! 但是其实并非助理 应该是差不多等级的两个人搞研究的。楼上的解释 会清晰一点

研究员的英文是 Research Associate 吗?如何缩写?

正常的是researcher, 缩写就是R

如何写研究计划Research Proposal

How to write a research proposal?能否写出漂亮的proposal,本质上取决于你对研究的思考深度和专业水准。但形式也很重要。英文的Research Proposal自有一套“八股”。程式化和结构化的好处就在于,可以让读者直接集中注意到最本质的内容上,而不是为形式分神。对于非英语native speaker的我们,如何理解英文学术世界的规范或曰思维定势,也是写作proposal之前必备的背景知识。下面这篇流传甚广的Research Proposal写作指南,言简意赅,颇具启发,对我自己的写作有所帮助,也希望能给更多的学界同仁带来便利。[点击这里,查看更多关于RESEARCH PROPOSAL以及GRANT PROPOSAL、PROJECT PROPOSAL写作的网上资源]文章作者Paul T. P. Wong, Ph.D., C.Psych. (Research Director, Graduate Program in Counselling Psychology. Trinity Western University Langley, BC, Canada). 题为:How to Write a Research Proposal. 全文转载如下:Most students and beginning researchers do not fully understand what a research proposal means, nor do they understand its importance. To put it bluntly, one"s research is only as a good as one"s proposal. An ill-conceived proposal dooms the project even if it somehow gets through the Thesis Supervisory Committee. A high quality proposal, on the other hand, not only promises success for the project, but also impresses your Thesis Committee about your potential as a researcher.A research proposal is intended to convince others that you have a worthwhile research project and that you have the competence and the work-plan to complete it. Generally, a research proposal should contain all the key elements involved in the research process and include sufficient information for the readers to evaluate the proposed study.Regardless of your research area and the methodology you choose, all research proposals must address the following questions: What you plan to accomplish, why you want to do it and how you are going to do it.The proposal should have sufficient information to convince your readers that you have an important research idea, that you have a good grasp of the relevant literature and the major issues, and that your methodology is sound.The quality of your research proposal depends not only on the quality of your proposed project, but also on the quality of your proposal writing. A good research project may run the risk of rejection simply because the proposal is poorly written. Therefore, it pays if your writing is coherent, clear and compelling.This paper focuses on proposal writing rather than on the development of research ideas.TITLE:It should be concise and descriptive. For example, the phrase, “An investigation of . . .” could be omitted. Often titles are stated in terms of a functional relationship, because such titles clearly indicate the independent and dependent variables. However, if possible, think of an informative but catchy title. An effective title not only pricks the reader"s interest, but also predisposes him/her favourably towards the proposal.ABSTRACT:It is a brief summary of approximately 300 words. It should include the research question, the rationale for the study, the hypothesis (if any), the method and the main findings. Descriptions of the method may include the design, procedures, the sample and any instruments that will be used.INTRODUCTION:The main purpose of the introduction is to provide the necessary background or context for your research problem. How to frame the research problem is perhaps the biggest problem in proposal writing.If the research problem is framed in the context of a general, rambling literature review, then the research question may appear trivial and uninteresting. However, if the same question is placed in the context of a very focused and current research area, its significance will become evident.Unfortunately, there are no hard and fast rules on how to frame your research question just as there is no prescription on how to write an interesting and informative opening paragraph. A lot depends on your creativity, your ability to think clearly and the depth of your understanding of problem areas.However, try to place your research question in the context of either a current “hot” area, or an older area that remains viable. Secondly, you need to provide a brief but appropriate historical backdrop. Thirdly, provide the contemporary context in which your proposed research question occupies the central stage. Finally, identify “key players” and refer to the most relevant and representative publications. In short, try to paint your research question in broad brushes and at the same time bring out its significance.The introduction typically begins with a general statement of the problem area, with a focus on a specific research problem, to be followed by the rational or justification for the proposed study. The introduction generally covers the following elements:1. State the research problem, which is often referred to as the purpose of the study.2. Provide the context and set the stage for your research question in such a way as to show its necessity and importance.3. Present the rationale of your proposed study and clearly indicate why it is worth doing.4. Briefly describe the major issues and sub-problems to be addressed by your research.5. Identify the key independent and dependent variables of your experiment. Alternatively, specify the phenomenon you want to study.6. State your hypothesis or theory, if any. For exploratory or phenomenological research, you may not have any hypotheses. (Please do not confuse the hypothesis with the statistical null hypothesis.)7. Set the delimitation or boundaries of your proposed research in order to provide a clear focus.8. Provide definitions of key concepts. (This is optional.)

research from 是什么意思?还有perspective后面的detailing是不是后置定语?是在没分了不好意思

research from研究e.g:But he concealed the research from his wife. 但他对妻子隐瞒了研究一事。perspective detailing角度详细介绍是后置定语【perspective】n.透镜,望远镜;观点,看法;远景,景色;洞察力adj.(按照)透视画法的;透视的e.g:Remember to keep things in perspective 记住要客观看待事物。【detailing】详细设计,细节设计;细部设计e.g:Detailing all his lies and deceptions. 讲述了他所有的谎言和诡计。

They could cement the status quo of peer reviewed research

典型的主谓宾结构的简单句:They(主语) could comment(谓语动词) the status quo of peer reviewed research(名词短语作宾语).

nutch和elasticsearch的区别

网络爬虫架构在Nutch+Hadoop之上,是一个典型的分布式离线批量处理架构,有非常优异的吞吐量和抓取性能并提供了大量的配置定制选项。由于网络爬虫只负责网络资源的抓取,所以,需要一个分布式搜索引擎,用来对网络爬虫抓取到的网络资源进行实时的索引和搜索。搜 索引擎架构在ElasticSearch之上,是一个典型的分布式在线实时交互查询架构,无单点故障,高伸缩、高可用。对大量信息的索引与搜索都可以在近 乎实时的情况下完成,能够快速实时搜索数十亿的文件以及PB级的数据,同时提供了全方面的选项,可以对该引擎的几乎每个方面进行定制。支持RESTful 的API,可以使用JSON通过HTTP调用它的各种功能,包括搜索、分析与监控。此外,还为Java、PHP、Perl、Python以及Ruby等各 种语言提供了原生的客户端类库。网络爬虫通过将抓取到的数据进行结构化提取之后提交给搜索引擎进行索引,以供查询分析使用。由于搜索引擎的设计目标在于近乎实时的复杂的交互式查询,所以搜索引擎并不保存索引网页的原始内容,因此,需要一个近乎实时的分布式数据库来存储网页的原始内容。分布式数据库架构在Hbase+Hadoop之上,是一个典型的分布式在线实时随机读写架构。极强的水平伸缩性,支持数十亿的行和数百万的列,能够对网络爬虫提交的数据进行实时写入,并能配合搜索引擎,根据搜索结果实时获取数据。网 络爬虫、分布式数据库、搜索引擎均运行在普通商业硬件构成的集群上。集群采用分布式架构,能扩展到成千上万台机器,具有容错机制,部分机器节点发生故障不 会造成数据丢失也不会导致计算任务失败。不但高可用,当节点发生故障时能迅速进行故障转移,而且高伸缩,只需要简单地增加机器就能水平线性伸缩、提升数据 存储容量和计算速度。网络爬虫、分布式数据库、搜索引擎之间的关系:1、网络爬虫将抓取到的HTML页面解析完成之后,把解析出的数据加入缓冲区队列,由其他两个线程负责处理数据,一个线程负责将数据保存到分布式数据库,一个线程负责将数据提交到搜索引擎进行索引。2、搜索引擎处理用户的搜索条件,并将搜索结果返回给用户,如果用户查看网页快照,则从分布式数据库中获取网页的原始内容。整体架构如下图所示:爬虫集群、分布式数据库集群、搜索引擎集群在物理部署上,可以部署到同一个硬件集群上,也可以分开部署,形成1-3个硬件集群。网络爬虫集群有一个专门的网络爬虫配置管理系统来负责爬虫的配置和管理,如下图所示:搜 索引擎通过分片(shard)和副本(replica)实现了高性能、高伸缩和高可用。分片技术为大规模并行索引和搜索提供了支持,极大地提高了索引和搜 索的性能,极大地提高了水平扩展能力;副本技术为数据提供冗余,部分机器故障不影响系统的正常使用,保证了系统的持续高可用。有2个分片和3份副本的索引结构如下所示:一个完整的索引被切分为0和1两个独立部分,每一部分都有2个副本,即下面的灰色部分。在 生产环境中,随着数据规模的增大,只需简单地增加硬件机器节点即可,搜索引擎会自动地调整分片数以适应硬件的增加,当部分节点退役的时候,搜索引擎也会自 动调整分片数以适应硬件的减少,同时可以根据硬件的可靠性水平及存储容量的变化随时更改副本数,这一切都是动态的,不需要重启集群,这也是高可用的重要保 障。

什么是secondary research?

Secondary Research.. 次级资料研究法secondary source次级来源第二手来源

请问research setting 什麽意思?尤其是其中的setting

research setting 实验场景setting 场景

《GooglePowerSearch》epub下载在线阅读全文,求百度网盘云资源

《Google Power Search》(Stephan Spencer)电子书网盘下载免费在线阅读链接: https://pan.baidu.com/s/1z-NinHAQKl1oRooS18nRYQ 提取码: k2of书名:Google Power Search作者:Stephan Spencer豆瓣评分:6.6出版社:O"Reilly Media出版年份:2011-8-2页数:72内容简介:Behind Google"s deceptively simple interface is immense power for both market and competitive research-if you know how to use it well. Sure, basic searches are easy, but complex searches require specialized skills. This concise book takes you through the full range of Google"s powerful search-refinement features, so you can quickly find the specific information you need. Learn techniques ranging from simple Boolean logic to URL parameters and other advanced tools, and see how they"re applied to real-world market research examples. Incorporate advanced search operators such as filetype:, intitle:, daterange:, and others into your queries Use Google filtering tools, including Search Within Results, Similar Pages, and SafeSearch, among others Explore the breadth of Google through auxiliary search services like Google News, Google Books, Google Blog Search, and Google Scholar Acquire advanced Google skills that result in more effective search engine optimization (SEO)

scientists should be kept in formed of the latest developments in their research areas.请具体解释下

主语:scienctists谓语:should be kept in formed ofthe latest developments是of的宾语

《petal search》网页版入口

petal search是华为推出的 浏览器 搜索引擎,中文名叫花瓣搜索,现在已经推出了网页版和手机端app,国内用户可以正常下载使用。这里我就为大家带来了petal search网页版入口,华为petal搜索引擎官网链接,有需要的小伙伴们一起来看看吧! 《petal search》网页版入口: 链接地址: https://petalsearch.com/ Petal搜索是华为提供的谷歌搜索替代品,此前已经在海外市场发布。现在华为花瓣搜索引擎Petal Search网页版也已经面向国内地区开放了,大家可以直接前往Petal网页版使用浏览器搜索内容。 华为petal search功能特色: 1、Petal搜索的界面是非常简洁的,首页只有八个元素,顶部的Petal logo、搜索栏、搜索栏里的语音和扫描、底部的探索、Petal、最近、我的。也正是这个页面,受到了不少网友的好评,清爽、简洁、无广告是主要评价,尤其是与目前国内一些搜索引擎相比,会形成比较大的反差。 2、在搜索栏中,默认提示是“查找应用及更多内容”,当我们搜索已安装应用时,它就会弹出,点击就能打开,用起来其实有点像目前华为手机的全屏下拉进入的全局搜索功能。当然,这也需要我们在Petal搜索内打开相关权限才能搜到结果,目前本机搜索范围包括应用、联系人、信息、日历、备忘录、电子邮件、设置、音乐八项。在系统权限当中会有位置、麦克风、摄像头、存储四种权限的开启和关闭选项。 3、在隐私的个性化服务当中,会有个性化搜索和个性化搜索推荐两个选项来供用户关闭和开启,开启后,它会基于用户数据,包括搜索历史和收藏,以及其他华为移动服务的活动记录,来提供个性化服务。在服务增强当中,还有两个个性化推荐、个性化广告开关,大家可以根据自己的喜爱选择开启或关闭,如果全部关闭的话,其实就不用担心被所谓的大数据了,它可能就不会那么懂你了。 4、在设置当中,用户可以选择搜索语言和区域,目前语言包括中文和英语,搜索区域包括全球和中国,可惜现在不能搜索,所以就无法给大家做一个简单搜索结果对比了。 5、同时,Petal还加入了安全搜索功能,分为严格、中等、关闭三个功能,其中严格将从搜索结果中过滤成人文本、图片和视频,中等会过滤图片和视频,但不过滤相关文本,关闭则均不过滤。 6、在我的版块中,收藏夹是一个非常有趣的存在,这里有Petal购物、网页收藏、图片收藏、优惠券、旅游五大版块,当你浏览喜欢的网页时,就可以直接添加收藏,然后添加到收藏夹里。由于目前一些功能不能使用,所以还没有摸透如何添加Petal购物、图片、优惠券、旅游这几个,大家感兴趣的话不妨试试。

论文中Research Methodology主要包括那些方法

上面那条里的调查观察文献属于methods,定量和定性才属于methodology

"Research Assistant" 和"Research Associate" 的区别

前者偏向助手,后者偏向副职research assistant助理研究员,助研;研究助理;研究实习员research associate研究助理;助理研究员assistant英 [u0259"su026ast(u0259)nt]美 [u0259"su026astu0259nt]n. 助手,助理,助教associate英 [u0259"su0259u028au0283u026aeu026at; -su026aeu026at]美 [u0259"sou0283u026aet]n. 同事,伙伴;关联的事物adj. 副的;联合的vt. 联想;使联合;使发生联系vi. 交往;结交

新加坡的research fellow和research associate有何区别

research fellow指研究员,research associate指助理研究员,二者的主要区别如下:一、评审要求不同1、研究员:硕士毕业会后两年可以申请助理研究员评审,评审通过给该职称。2、助理研究员:任研究实习员4年以上,或获得硕士学位后任研究实习员2年以上等。二、等级不同1、研究员:研究员的等级为正高。2、助理研究员:助理研究员的等级为中级。三、特点不同1、研究员:获得副研究员职称五年后可以申请研究员的评审,要求与副研相同,主要是对技术工作能力的确认,要有证据证明自己的实际技术工作能力,最好的证据就是成果。2、助理研究员:取得硕士学位后从事本专业研究工作1年以上,可破格申报。参考资料来源:百度百科-助理研究员百度百科-研究员

springer中的《social indicators research》期刊投稿容易么

朋友你好,试试就知道了。直接往要投的报刊、网站或者其他媒体的电子邮箱投稿即可。根据我多年从事文字工作的经验,我认为:如果投稿更有针对性,命中率会更高一些。这就关系到,你是哪里的?干什么的?写的稿件是什么体裁?什么内容?如果说投稿的话,最好投当地的报刊、网络或者是你从事的职业报刊发表,要投哪个媒体首先要研究哪个媒体,看它需要什么内容、什么体裁、什么格式的稿件,“对症下药”,这样会更轻松一些、方便一些,命中率会更高一些。如果你能够告诉我你的具体情况(干什么工作,哪里的,写的小说的大致内容等),我可以给你一些建议。我1993年开始在部队时开始发表各类文章,包括:报告文学、新闻、诗歌、散文、小说、评论等体裁的,到目前,先后在《人民日报》《法制日报》《农民日报》《中国文化报》《法制文萃》《半月谈》《解放军报》《中国国防报》《中国绿色时报》《中国日报》《中国教育报》《人民公安报》《中国交通报》《中国安全生产报》《中国转业军官》《中国人事》《道路交通管理》等报刊发表的大约5000篇左右吧,有40多篇获奖。另外:投稿时,第一要有信心,第二要投对报刊媒体,这两点非常重要。祝你成功!

发表在researchsquare的文章还能继续投稿吗

能。根据ResearchSquare的官方政策,发表在ResearchSquare上的文章仍然可以在其他期刊上投稿。因为ResearchSquare并不是一个正式的期刊,而是一个预印本平台,旨在为研究人员提供一个分享研究成果、获得反馈和建议的平台。因此,即使您已经在ResearchSquare上发表了文章,仍然可以将其提交到其他期刊进行正式发表或其他用途。

researchsquare一直没有更新

版本老旧、网络故障。1、版本老旧。researchsquare的内容要求平台版本为最新版本,版本老旧就无法更新,需要在版本页面进行更新。2、网络故障。researchsquare需要在网络良好的环境下进行,网络故障就会导致无法更新,更换网络尝试即可。

ElasticSearch搜索term和terms的区别

http://www.cnblogs.com/zhaijunming5/p/6427100.html

ao3的Search all fields什么意思

从歌词来看,是个虚构的地名。 《Valder Fields》来自Tamas Wells 新专辑《 A Plea en Vendredi 》中的 Valder Fields 。歌曲开场没有前奏音乐,歌手直接用人声起唱,曲风清新,节奏欢快,从一开始就透露出一种浪漫的气息,让人不知不觉融入歌曲的旋律之中。 每当听到清脆的吉它声伴随着明快的钢琴声,就像细雨一样滴进心田,让人想起从前那无忧无虑的时光....... valder fields I was found on the ground by the fountain about a fields of a summer stride lying in the sun after I had tried lying in the sun by the side we all agreed that the council would end up three hours over time shoe laces were tied at the traffic lights I was running late, could apply for a not her one I guess after parking stores are best they said that there would be delays on the temporary pay

如何打开elasticsearch

[hadoop@fat283-0003 ~]$ curl -XGET localhost:9200{"status" : 200,"name" : "She-Venom","cluster_name" : "elasticsearch","version" : {"number" : "1.7.2","build_hash" : "e43676b1385b8125d647f593f7202acbd816e8ec","build_timestamp" : "2015-09-14T09:49:53Z","build_snapshot" : false,"lucene_version" : "4.10.4"},"tagline" : "You Know, for Search"}

research 和trial 的区别

research英 [ru026a"su025cu02d0tu0283; "riu02d0su025cu02d0tu0283]美 ["risu025dtu0283]n. 研究;调查vt. 研究;调查vi. 研究;调查[ 过去式 researched 过去分词 researched 现在分词 researching ]更多释义>>[网络短语]research 调查,研究,研究Qualitative research 定性研究,质性研究,定性研究research institute 研究中心,研究院,研究机构trial英 ["trau026au0259l]美 ["trau026au0259l]n. 试验;审讯;努力;磨炼adj. 试验的;审讯的n. (Trial)人名;(法)特里亚尔更多释义>>[网络短语]trial 审判,审讯,试验Gadget Trial 机甲萝莉,战机少女,机战少女Clinical trial 临床试验,临床试验,临床实验

在投稿时有original research,editorial,review和preface等几项要选,一般选哪一项

originalresearch表示原创editorial表示是编辑review是对文章的评论preface是为文章做序看你是哪种就选哪个

在投稿时有original research,editorial,review和preface等几项要选,一般选哪一项

这几个选项分别是原创研究,编辑,评论和序言(导论),看你文章的性质来选择。

_______ in financial scandals ,according to a social research ,was regarded as top ...

第一个缺主语,用动名词结构第二个不缺,是那个什么什么从句来着。

有什么 Roam Research 的替代方案?

我目前使用obsidian来替代Roam Research来进行一些笔记工作。原因有几点:1、个人免费使用,无需额外的付费。2、本地化,不用联网,也不担心服务器方面的问题。3、数据安全和可迁移性。第3点是最重要的,除了RR之外,很多的双链软件(包括ob)都属于内测,也都无法保证数据的安全性。但ob因为数据在本地保存,可以很方便进行备份操作。此外,如果你不插入图片,是纯文字,我认为ob的markdown数据能很快导入到其他的软件中。因为obsidian使用的是最基础的功能,尽管不能尽如人意,但是后续的软件都能兼容(具备)。名词解释:1、古时称散文为笔,与韵文相对时,称笔记。2、一种以随笔记录为主的著作体裁。内容大都为记见闻,辨名物,释古语,述史事,写情景。其异名则有随笔、笔谈、杂识、札记等。3、用笔记录。亦指听课、听报告、读书时所作的记录。

u盘装系统出现searching(ud)/pe/UQD8x64.iso是什么意思?

你好,建议你最好去找相关专业人士咨询下或直接到相关网站查下,谢谢,望采纳!

Research Investigator是什么?相当于国内的什么职位?

研究调查员。 相当于国内的市场部职员

"investigator-led research" 怎么翻译?

由..担纲的研究工作

Coursework授课型和research研究型硕士课程有什么区别

通常来说,国外大学的硕士学位课程一般分为类(Coursework/Taught)和研究类(Research)两种。所谓的类硕士课程,顾名思义,是以为主的学习方式,通过学生对课程的学习,完成学科作业和考试完成学位的。而这并不意味着此类硕士只要学习课堂知识就可以了,这与本科阶段的学习还是有很大区别的。类硕士不单单要学习课堂知识,而是为主的方式指通过讨论会、讲义、考试等获得学分,最后通过提交小论文或参加毕业考试获取硕士学位。研究类硕士则是主要以研究专项课题为主的,在导师的指导下进行独立的研究后提交论文,论文通过并经口头答辩,获得学位。研究类的硕士是对于某项课题进行专门的研究,如果学生想在所选专业方向进行深入研究或打算进入博士阶段的学习,选择研究类硕士是最佳选择。如果学生打算硕士毕业后就就业的话,就要选择类硕士,因为类的硕士培养的是学生研究能力,团队合作和公开演讲或调研的能力,更符合就业的需要。就澳大利亚来说,几乎每家大学都会开设研究型硕士(Master by Research)和型硕士(Master by Coursework )的课程而绝大多数生会选择后者,起原因很简单:按入学条件来说,研究型硕士在申请之前需要联系所申请学科的导师,需要提交计划书和信等等,相比之下,型对成绩和专业相关度比较看中,有时需要工作经验做背景。课程的设置上,研究性硕士一般是2年,期间除了上课外,需要发表论文,项目实验,文献探索等等;型的话是1到2年不等,而且和本科相似,完成各种作业以及各种考试等。毕业后,更多的型硕士会选择去工作,而研究型的硕士一般还会继续深造或者去研究~而移民方面不管是研究型还是型,都能或者5分的加分,前提是2年的FULL TIME 学习。

澳洲工科生留学有research和coursework master的要求

  工科生留学澳洲,澳洲大学有research和coursework master的要求,很多学生认为澳洲大学对前者的要求要比后者高,其实不然,澳洲很多学校,包括大部分澳洲八大的master by research要求普遍比master by coursework要求低。   首先这里讲的要求是指硬件条件,所谓硬件条件就是不能变动的背景,比如本科成绩,雅思成绩,发表的文章等。并且此要求仅指最低门槛。举个例子,假如mel的coursework的要求80分以上,那你75去尝试是基本上不可能成功的,但是research假如导师同意录取你,就很有可能成功。   在澳洲master主要有两种教育形式,一个是做research,主要是导师给一个课题,在规定的时间内(1-2年)完成研究任务。这个难度根据不同学校,不同导师差别比较大,不过research by master一般要求都不会很高,做的东西也不会很深,大部分都是能按时毕业的。另一种就是大部分国人入读的coursework了,这个是以上课为主,但如果是2年的课程,一般有至少一学期以上的时间用于一些比较浅的研究。   有很多人以为澳洲的rsearch master才等同于国内的硕士,事实上恰恰相反,其实国内的硕士更像澳洲的coursework master。不要忘了,国内的硕士第一年是要上课的,第二年才开始选课题,做研究,这和大部分澳洲的coursework master非常相似,但是有一个区别,国内硕士研究一般只有一个方向,但澳洲大部分coursework master有可能每学期一个方向,甚至每学期做几个方向的研究。   澳洲的research master是基本上不用上课,一入学就进入课题组开始研究的准备,这个和国内的硕士是有很大的区别。

Master by CourseWork 和 by Research 的区别 新加坡留学

后者是研究型的,要学更久

research students 和coursework students有什么区别?

研究性学生、学习课程的学生,两个的性质有明显区别!!!!

澳洲的coursework不如research吗?档次上有差别吗?

coursework就是老师在上面讲你在下面听research是搞研究的diploma只是个研究生文凭 比不上master的去留学一般都是coursework

国外大学by research和coursework的区别

国外大学硕士学位课程一般分为授课类(Coursework)和研究类(Research)两种,我们国内的学生一般都申请的是授课型硕士。1.授课类硕士课程,以授课为主的学习方式,学生通过对课程的学习,完成学科作业和考试完成学位的。授课类硕士不单单要学习课堂知识,而是授课为主的方式指通过讨论会、讲义、考试等获得学分,最后通过提交小论文或参加毕业考试获取硕士学位。2.研究类硕士主要以研究专项课题为主的,在导师的指导下进行独立的研究后提交论文,论文通过并经口头答辩,获得学位。研究类的硕士是对于某项课题进行专门的研究,3.如果学生想在所选专业方向进行深入研究或打算进入博士阶段的学习,选择研究类硕士是最佳选择。如果学生打算硕士毕业后就就业的话,就要选择授课类硕士,因为授课类的硕士培养的是学生研究能力,团队合作和公开演讲或调研的能力,更符合就业的需要。4.按入学条件来说,研究型硕士在申请之前需要联系所申请学科的导师,需要提交计划书和推荐信等等,相比之下,授课型对成绩和专业相关度比较看中,有时需要工作经验做背景。5.课程的设置上,研究性硕士一般是2年,期间除了上课外,需要发表论文,项目实验,文献探索等等;授课型的话是1到2年不等,而且和本科相似,完成各种作业以及各种考试等。6.毕业后,更多的授课型硕士会选择去企业工作,而研究型的硕士一般还会继续深造或者去研究机构~而移民方面不管是研究型还是授课型,都能或者5分的加分,前提是2年的FULL TIME 学习。

国外大学masterbycoursework和masterbyresearch有什么区别

留学志愿参考系统:https://www.jianshu.com/p/20ef0e8bdca2

coursework和research硕士的区别

course work是以上课为主,最后写篇论文毕业,有点像国内的大四最后一年。research则是以研究为主,上课包括成绩都不是重要的因素,一般毕业要求有论文发表。二者的文凭有些许差别,不过都是master degree。就读的话首先考虑能否申请,一般来说,course work比较容易,而Research理工科一般会希望你有项目经验或者科研经历,文科希望你有工作经验,这样把握会更大一些。至于如何选择,或者像你说的,哪个好,这个要看你的定位或者对未来的想法。如果你想从事研究,那么Research肯定好,一般读完后都可以继续在教授那里做phd,如果不考虑这个,那其实两者差别不大,只是,research因为有更多的实际操作经验,找工作的时候可能会更有优势一些,不过,就文凭程度而言,两者是一样的,比如你要评职称,无论是哪种类型的硕士,只要有degree,一视同仁。

就读国外研究生的coursework和research有什么不同?文凭不一样吗?就读哪一种会比较好呢?谢谢

啊,就是跟我国的学硕和专硕的区分一样是吧

请问哪位高人知道澳洲读博gradute research 和graduate cousework的区别吗,十分感谢~

graduate research是作研究类别的,比较难进,graduate coursework是纯上课的

在澳洲读研是research和coursework那个更好找工作啊

干!!没有悬赏分!!现在提问的人怎么都这么无耻呢~!

Coursework授课型和research研究型硕士课程有什么区别

通常来说,国外大学的硕士学位课程一般分为授课类(Coursework/Taught)和研究类(Research)两种。所谓的授课类硕士课程,顾名思义,是以授课为主的学习方式,通过学生对课程的学习,完成学科作业和考试完成学位的。而这并不意味着此类硕士只要学习课堂知识就可以了,这与本科阶段的学习还是有很大区别的。授课类硕士不单单要学习课堂知识,而是授课为主的方式指通过讨论会、讲义、考试等获得学分,最后通过提交小论文或参加毕业考试获取硕士学位。研究类硕士则是主要以研究专项课题为主的,在导师的指导下进行独立的研究后提交论文,论文通过并经口头答辩,获得学位。研究类的硕士是对于某项课题进行专门的研究,如果学生想在所选专业方向进行深入研究或打算进入博士阶段的学习,选择研究类硕士是最佳选择。如果学生打算硕士毕业后就就业的话,就要选择授课类硕士,因为授课类的硕士培养的是学生研究能力,团队合作和公开演讲或调研的能力,更符合就业的需要。就澳大利亚来说,几乎每家大学都会开设研究型硕士(Master by Research)和授课型硕士(Master by Coursework )的课程而绝大多数留学生会选择后者,起原因很简单:按入学条件来说,研究型硕士在申请之前需要联系所申请学科的导师,需要提交计划书和推荐信等等,相比之下,授课型对成绩和专业相关度比较看中,有时需要工作经验做背景。课程的设置上,研究性硕士一般是2年,期间除了上课外,需要发表论文,项目实验,文献探索等等;授课型的话是1到2年不等,而且和本科相似,完成各种作业以及各种考试等。毕业后,更多的授课型硕士会选择去企业工作,而研究型的硕士一般还会继续深造或者去研究机构~而移民方面不管是研究型还是授课型,都能或者5分的加分,前提是2年的FULL TIME 学习。

Master by CourseWork 和 by Research 的区别 新加坡留学

简言之,能读byResearch就不要读byCourseWork;byResearch申请难度比byCourseWork大很多。byCourseWork一般是一年制,主要就是过去学一些课程,可能会有一些比简单的项目需要做;byResearch学制一般是2年,过去主要是做研究的。

coursework 和research 的区别

Master by course, 可以只用修课,不做论文(你也可以选择做论文). 课修够了就毕业. 最短学制1年 (full time). 读part time的人比较多. 大多数by course没有奖学金, 当然个别学科有,如DTI,MIT联合以及物流学院的. 所以就是自己交钱, 时间短, 拿了学位走人,可以不用被老板牵制. 入学要求低,好的GPA+托福580+ 就可以了.Master by research 一般有奖学金.必须做论文,但是没有publication的要求. 最短要1.5年+,看老板心情. 读part time的人少,还是有part time的. 所以说,就是,学校发钱, 时间长, 毕业看老板,入学要求会高一点.对于读Phd, Master by research 主要为读phd做准备, 可以转成phd. 而by course, 虽然工作准备的,但学业优秀的学生也可以继续申请攻读博士学位,并可以免去托福和GRE成绩。Master在新加坡及很多西方国家是过渡学位, 本身含金量并不如在中国的高. 新加坡的雇主招人是,并不在意by course 和 by research的区别。还是看能力。国内的学位认证也不区分这两者,均为硕士学位。

到底选coursework 还是research呢?

research类型的学术水准更高,因此工作需求很大,或者说更容易找到工作 !澳洲的硕士课程 certificate diploma master degree coursework master degree by research 前三种的学习形式跟本科差不多,都是只要选课,上课,修满学分就毕业。 最后一种是搞科研项目的。 中国大部分的赴澳留学生都是cousework类的master 至于你说的档次,这个每个人的看法不一样。 如果你觉得比较适合搞科研学术,你就申请master by research(有可能有奖学金) 如果你为了移民或者找工作还是申请master by coursework,这个申请要求比较低,就是学费比较高。

澳洲大学的coursework和researchwork分别是什么?有什么区别么?

coursework是指授课式硕士researchwork是指研究式硕士

和research,coursework,的区别

coursework是以上课为主,最后写篇论文毕业,有点像国内的大四最后一年。research则是以研究为主,上课包括成绩都不是重要的因素,一般毕业要求有论文发表。二者的文凭有些许差别,不过都是masterdegree。就读的话首先考虑能否申请,一般来说,coursework比较容易,而Research理工科一般会希望你有项目经验或者科研经历,文科希望你有工作经验,这样把握会更大一些。至于如何选择,或者像你说的,哪个好,这个要看你的定位或者对未来的想法。如果你想从事研究,那么Research肯定好,一般读完后都可以继续在教授那里做phd,如果不考虑这个,那其实两者差别不大,只是,research因为有的实际操作经验,找工作的时候可能会更有优势一些,不过,就文凭程度而言,两者是一样的,比如你要评职称,无论是哪种类型的硕士,只要有degree,一视同仁。祝你好运!

Elasticsearch 设置账号密码

前言 7.0以后es把基础的安全模块免费集成了。很棒。现在试试设置吧。 官网安全模块文档 其中包含了一个安全入门教程 正文 下面基本都是以我的操作为例,实际上可以按照官网文档进行其它的尝试。 一、设置账号密码 单节点 在elasticsearch.yml文件里增加配置 初始化密码需要在es启动的情况下进行设置,按照提示输入各个内置用户的密码。

有一把eppendorf research系列10ul的移液器,一点液体都吸不上来。卸开了不知道里面什么部件有问题。

找一下移液器的销售人员,问问他艾本德的售后,据说艾本德的枪不怎么好修,但是挺好用是真的。1-10ul的枪,你如果不是售后的话建议不要自己拆,要不然很容易就掉零部件。

search的用法

search a person搜身search one"s memory寻思; 追忆search one"s heart扪心自问search a house for a hidden weapon在住宅内搜查武器search a wound(用探针)探伤in search of (=in one"s search for)为了寻找, 追求make a search after [for](去)找, 寻求, 搜查search after [for]寻找, 探求search into调查, 研究search sb."s face察看某人的脸色search out搜(查)出, 探出search through把...仔细搜寻一遍

search的用法是什么?

search sth在。。。地方搜,查找search sth for sth在。。地方搜,查找。。。search sb搜某人的身search sb for sth在某人身上搜。。。search for the little boy到处找寻那个小男孩经验之谈,仅供参考

searchmarimo是什么意思

就是寻找MARIMOmarimo(マリも)是世界上唯一的一种圆形绿海藻,生长在北半球,是日本北海道著名淡水湖 - 阿寒湖 的纪念物。在世界历史上marimo首次被介绍是在Carl vonLinne于1753年出版的《植物的种类》一书中。然后,在1843年,F.T.Kutzing发表了澳大利亚ツェラー(没翻译出来)湖出产的球状绿藻。因此被记录为新的绿藻科(专业名词翻译不了,抱歉)。而在日本的阿寒湖的marimo是于1897年被川上龙倪所发现的,因其外形呈圆形,所以取名为marimo(海藻球)。随后不久在1921年的时候就被日本指定为国家自然保护物。而关于可爱的marimo,日本民间还有一个如果牛郎织女般的美丽传说。相传古时候,日本阿寒湖附近一个小村落中,有一个美丽的女子,是酋长的女儿。酋长要女儿与一名男子结婚,但是她早已与另一位普通部族的勇士相爱。酋长不允许,强迫女儿与他钟意的男子结婚。婚礼之夜,酋长女儿远远听到勇士吹奏的草笛,依循着笛声到了阿寒湖畔,就在淡淡的月光下,两人乘着木舟划到湖中,约定来世结缘,然后就一起投身入了故乡的湖中。酋长和村人感受到两人的深情,转而为他们两人祈求永远的幸福。两人相恋的魂魄在湖中化成了由两人名字合称的Marimo,幸福地世世代代在阿寒湖底继续他们至死不渝的爱情。从此之后,相爱的男女只要来到阿寒湖祈求,都会很幸福美满的。而绿色的海藻球Marimo就代表了坚定不移的爱情以及执着于幸福的努力。人们都相信养殖Marimo能带来幸福,它会将养殖者的愿望转化成信念,直至愿望实现。每一天,你都可以对着小小的绿藻球,在心里念个幸福魔咒:Mari,Mari,Marimo……在日本,还流传着关于这个传说的民谣。晴れれば浮かぶ水の上昙れば沈む水の底恋は悲しと叹きあうマリモよマリモ涙のマリモ大意是说晴就浮雨就沉爱是悲伤的叹息眼泪化做海藻球而在几十年前发行的一张名为《marimo之恋》的唱片更是至今为止唯一一张以marimo为主题的唱片,也作为了北海道阿寒湖的观光纪念物。

选择性搜索算法 (Selective Search)

计算机视觉领域有几个基本的任务: object detection 的基础是 object recognition,只不过要先将图片进行分割,对每个分割之后的子图区域 region (也称为 patch) 进行 object recognition. 由于事先并不知道物体在图片的哪个位置,为了避免漏检,我们应该对图片中尽量多的 region 进行搜索。理论上来说,可以有无穷多个 region。这里就需要一种 region proposal 的算法,以比较高效的方式提出图片划分 region 的方式,从而加速整个 object detection 的过程并且提高准确率。 本文将要介绍的 selective search 算法 ,是比较经典的,也是 R-CNN 中使用的 region proposal 算法。 参考文献: 为了避免蛮力搜索,selective search 算法首先需要一个基于像素的图像分割。这里用的是 Felzenszwalb and Huttenlocher 算法 (因为是当时速度最快的算法,而且是公开的),得到一个 oversegmented 的图像分割。例如: 这里之所以用 oversegmented 图像,是为了得到尽可能细分的区域,再以此为基础逐步合并,形成更大的区域。 image segmentation 可以用作 region proposal 的基础,每个分割的区域都可以看作一个潜在的 region,但是一个 object 往往包含了多个分割的区域,例如盛有咖啡的杯子,咖啡和杯子应该作为一个整体来看待。因此,还要根据某种相似性原则进行分割区域的合并,得到更大范围的 region。 Selective search 算法考虑了 4 种相似性度量,取值都在 [0,1] 之间,越大越相似。 最终的相似性度量是上述四个度量的组合: 其中 取 0 或 1. 总结起来,selective search 的算法步骤非常简单: 环境配置: 具体程序: 最后效果如下: 显示的 100 个 region 已经包含了我们感兴趣的待检测区域,说明了 selective search 算法的高效。

求search for your love中文歌词

你总是闪耀着光辉 你的笑容好似一颗小星星 我多么珍爱它啊 永远的 startlight 那一天 我无法保护你 我只能我守着我那懊悔的泪水 我仍然感到痛苦 我不会忘记你的 sweetheart search for your love 天堂里的水晶 search for your love 请别哭泣 search for your love 事实上我... 想要将你拥抱在怀里 你的气味 是我一直在寻找的 你可以听到我的声音吗?我爱你 你现在在哪里 月光公主 我的公主 回答我 Answer for me 就是现在 Answer for me 回答我 Answer for me 温柔地 Answer for me 在遥远的夜空中穿越 我在流星前许下愿望 喃喃自语着想见到你 (星光啊请传达我的信息吧) ............ ............ ............ ............ ............ ............ 你的味道是我一直在寻找的 你可以听到我的声音吗 我爱你 你现在在哪里 月光公主 我的公主 回答我 Answer for me 就是现在 Answer for me 回答我 Answer for me 温柔地 Answer for me

The Search Is Over 歌词

歌曲名:The Search Is Over歌手:Survivor专辑:The Best Of SurvivorThe Search Is OverServivorBy Mike053212Joyse,My search is over,I just wanna say,I love you ……How can I convince you what you see is realWho am I to blame you for doubting what you feelI was always reachin", you were just a girl I knewI took for granted the friend I have in youI was living for a dream, loving for a momentTaking on the world, that was just my styleNow I look into your eyesI can see forever, the search is overYou were with me all the whileCan we last forever, will we fall apartAt times it"s so confusing, these questions of the heartYou followed me through changes and patiently you"d waitTill I came to my senses through some miracle of fateI was living for a dream, loving for a momentTaking on the world, that was just my styleNow I look into your eyesI can see forever, the search is overYou were with me all the whileNow the miles stretch out behind meLoves that I have lostBroken hearts lie victims of the gameThen good luck it finally struckLike lightning from the blueEvery highway leading me back to youNow at last I hold you, now all is said and doneThe search has come full circleOur destinies are oneSo if you ever loved meShow me that you give a damnYou"ll know for certainThe man I really amI was living for a dream, loving for a momentTaking on the world, that was just my styleThen I touched your hand, I could hear you whisperThe search is over, love was right before my eyesEndhttp://music.baidu.com/song/31394567

Some people Search Forever 是哪首歌的歌词?

A Moment Like This 歌手:Kelly Clarkson Kelly Clarkson - A Moment Like ThisWhat if I told youIt was all meant to be Would you believe meWould you agreeIt"s almost that feelin"We"ve met beforeSo tell me that you don"t think I"m crazy When I tell you love has come here and now A moment like this Some people wait a lifetimeFor a moment like this Some people search foreverFor that one special kissOh, I can"t believe it"s hapenning to meSome people wait a lifetimeFor a moment like thisEverything Changes But beauty remainsSomething so tenderI can"t explainWell I may be dreamin"But still lie awakeCan we make this dream last foreverAnd I"ll cherish all the love we shareCould this be the reign of love aboveI wanna know that you will catch me when I fallSo let me tell you thisSome people wait a lifetimeFor a moment like this Some people wait a lifetimeFor a moment like this Some people search foreverFor that one special kissOh I can"t believe it"s happening to meSome people wait a lifetime For a moment Like thisOh, like this Oh I can"t believe it"s happening to meSome people wait a lifetime For a moment Like thisLike this

跪求美少女战士5部,星光三剑客唱的《SEARCH FOR YOUR LOVE》歌词的谐音

Search for Your LOVE... kimi wa itsumo kagayaiteta egao hitotsu chiisana hoshi taisetsu ni shiteta yo (eien no Starlight) ano hi boku wa mamorenakute kuyashinamida koraeta dake itami ga nokoru yo (wasurenaide Sweet heart) Search for Your LOVE sora no suishou Search for Your LOVE nakanaidekure Search for Your LOVE hontou wa dakishimetai no sa kimi no kaori zutto (sagashiteru) boku no koe yo todoke (aishiteru) ima doko ni iru no (Moonlight Princess) boku no purinsesu kotaete Answer for me imasugu Answer for me kotaete Answer for me yasashiku Answer for me tooi yozora kakenuketeku nagareboshi ni negau yo ima aitai to sasayaku (tsutaete yo Starlight) toki ga sugite otona ni naru boku wa yatto kizuita no sa tarinai kakera ni (soba ni ite Sweet heart) Search for Your LOVE gin no unabara Search for Your LOVE fune wa tadayou Search for Your LOVE kuruoshisa ni nagasareteyuku kimi no kaori zutto (sagashiteru) boku no koe yo todoke (aishiteru) ima doko ni iru no (Moonlight Princess) * boku no purinsesu kotaete Answer for me imasugu Answer for me kotaete Answer for me yasashiku Answer for me

Search The City的《The Rescue》 歌词

歌曲名:The Rescue歌手:Search The City专辑:A Fire So Big The Heavens Can See ItKutless - The RescueI don"t know what"s happeningEverything around me has come crashing to the groundIt"s here I see my needIn all the devastationI"m praying for a miracle, help me to escapeAgainMy life is a mass destructionYou"re pulling me from the mess I"m inYou take me awayThere"s glass in the air I"m breathingSomehow my heart keeps beating tillYou take me awayWill you send an angelA ray of sunlight shining through the darkness of my worldThat"s falling down on meYou are my salvationThe only one to rescue me from the torment that I"m inAgainMy life is a mass destructionYou"re pulling me from the mess I"m inYou take me awayThere"s glass in the air I"m breathingSomehow my heart keeps beating tillYou take me awayGoodbye my hurtingGoodbye my needingGoodbye my worriesGoodbye to all of my bleedingMy life is a mass destructionYou"re pulling me from the mess I"m inYou take me awayThere"s glass in the air I"m breathingSomehow my heart keeps beating tillYou take me awayhttp://music.baidu.com/song/2671357

The Search Is Over 歌词

歌曲名:The Search Is Over歌手:Survivor专辑:Now That"s What I Call Power BalladsThe Search Is OverServivorBy Mike053212Joyse,My search is over,I just wanna say,I love you ……How can I convince you what you see is realWho am I to blame you for doubting what you feelI was always reachin", you were just a girl I knewI took for granted the friend I have in youI was living for a dream, loving for a momentTaking on the world, that was just my styleNow I look into your eyesI can see forever, the search is overYou were with me all the whileCan we last forever, will we fall apartAt times it"s so confusing, these questions of the heartYou followed me through changes and patiently you"d waitTill I came to my senses through some miracle of fateI was living for a dream, loving for a momentTaking on the world, that was just my styleNow I look into your eyesI can see forever, the search is overYou were with me all the whileNow the miles stretch out behind meLoves that I have lostBroken hearts lie victims of the gameThen good luck it finally struckLike lightning from the blueEvery highway leading me back to youNow at last I hold you, now all is said and doneThe search has come full circleOur destinies are oneSo if you ever loved meShow me that you give a damnYou"ll know for certainThe man I really amI was living for a dream, loving for a momentTaking on the world, that was just my styleThen I touched your hand, I could hear you whisperThe search is over, love was right before my eyesEndhttp://music.baidu.com/song/59459069

寻找星野为小兔所唱的歌曲"Search for you love"的罗马歌词

星野为小兔所唱歌曲的Search for you love"的歌词你总是闪耀着光辉 你的笑容好似一颗小星星 我多么珍爱它啊 永远的 startlight 那一天 我无法保护你 我只能我守着我那懊悔的泪水 我仍然感到痛苦 我不会忘记你的 sweetheart search for your love 天堂里的水晶 search for your love 请别哭泣 search for your love 事实上我..想要将你拥抱在怀里 你的气味 是我一直在寻找的 你可以听到我的声音吗?我爱你 你现在在哪里 月光公主 我的公主 回答我 Answer for me 就是现在 Answer for me 回答我 Answer for me 温柔地 Answer for me 在遥远的夜空中穿越 我在流星前许下愿望 喃喃自语着想见到你 (星光啊请传达我的信息吧) 你的味道是我一直在寻找的 你可以听到我的声音吗 我爱你 你现在在哪里 月光公主 我的公主 回答我 Answer for me 就是现在 Answer for me 回答我 Answer for me 温柔地 Answer for me

search for you的歌词

Jordon Omley – Search For You (My Story)I"m a story without wordsA melody that"s never heardI"m a masterpiece, no body seesUntil you finish meAnd I"m an empty ring of goldWithout a precious stone to holdAnd when I find youI"m gonna make you mineCause girl I know thatOnce upon a time is all ill ever be without youCause you"re the words to my storyA song written for mePlaying somewhere, somewhereYou"re the words to my storyThe only one for meAnd you"re out there, out thereIll search for you, search for you, search for youI really miss you everydayThough ive never seen your faceBut I"m sure that I would recognizeThe kiss just by its tasteAnd if it takes me all my lifeI"ll be looking day and nightAnd when I find you, I"m gonna make you mineCause girl I know thatOnce a upon a time is all I"ll ever be without youCause you"re the words to my storyA song written for mePlaying somewhere, somewhereYou"re the words to my storyThe only one for meAnd you"re out there, out thereIll search for you, search for you, search for youIll search for you, search for you, search for youDon"t wanna live my life in this boxYou got the key and I know you can unlockI won"t curse, there"s no way I will stopTill I find, till I find youCause you"re the words to my storyA song written for mePlaying somewhere, somewhereYou"re the words to my storyThe only one for meAnd you"re out there, out thereIll search for you, search for you, search for youIll search for you, search for you, search for youIll search for you, search for you, search for you 看看是不是这个?

Search Your Heart 歌词

歌曲名:Search Your Heart歌手:Steve Forbert专辑:Rock While I Can Rock: The Geffen RecordingsPete Yorn & Scarlett Johansson - Search Your HeartAnd you search your heartAnd you search your heartAnd you search your heartAnd you search your heartI just wanna tell youI don"t know whyIf you find the answerI"ll be insideArranging timeYou won"t find another dummy wait for youSo don"t hate the one who lives for youDon"t blame him for your troubleAnd you search your heartAnd you search your heartI don"t need the answerI just don"t knowIf you"d find it one dayI know that your strength is goneAnd you are shatteredDon"t hate me for I live for you (live for you)Don"t make me do things you won"t doDon"t blame me for your troubleOnce you knowOnce you"re over the top of the hillYour whole life ain"t no supermarket storeAnd you know thisAnd it showsAnd it showsYeah yeah yeah yehaSo don"t blame the boy who is there for youDon"t make him do things you won"t doDon"t blame him for your troubleDon"t hate him for your troubleDon"t blame him for your oohAnd you search your heartAnd you search your heartAnd you search your...

If someone says to you: “ Give me five”, do not search your pocket to get five yuan! It will ma.

小题1:B小题2:B小题3:C小题4:A小题5:C 试题分析:试题分析:这篇短文主要介绍了美国一条重要的交际用语give me five,文中介绍了它的含义及由来。小题1:根据短文第三段描述,可知这是一个庆祝胜利的手势,故选B。小题2:根据第二段根据图片提示,可知此处指的是孩子们互击双手。故选B。小题3:根据People do it when they meet for the first time or something happy happens.描述,可知选C。小题4:根据最后一段This gesture may come from the old Roman gesture of raising the right arm for the king.描述,可知选A。小题5:根据This showed that the person raising his arm did not have a sword ( 剑 ) in his hand.描述,可知选C。点评:本文浅显易懂,层次分明,学生很容易把握文章中心内容。阅读中注意把握短文给出的一切关键信息,如本文中的图片就是解答最后一小题的关键依据。答题中注意带着问题阅读短文,一般就能顺利找出答题依据。对于不能直接找到根据的问题注意联系上下文,根据短文中心总结出正确答案。

求美少女战士第五部中插曲《search for you love》的中文译音

Nagareboshi he—Search for your love Search for your love..... 寻找你的爱 Search for your love 寻找你的爱 Kimi ha itsumo kagayai te ta 你总是闪耀着光辉 egao hitotsu chiisana hoshi 你的笑容好似一颗小星星 taisetsu ni shite ta yo (eien no starlight) 我多么珍惜它啊 (永远的Starlight) ano hiboku ha mamore nakute 那一天我无法保护你 kuyashi namida kora e ta dake 我只能守着我那掘强的泪水 ita mi ga noku ru yo (wasurenai sweetheart) 我仍然感到痛苦 (我不会忘记你的sweetheart) Search for your love, sora no suishou 寻找你的爱 天堂里的水晶 Search for your love, nakanai de kure 寻找你的爱 请别哭泣 Search for your love, hontou ha, 寻找你的爱 事实上我 dakishimetai no sa 想要将你拥抱在怀里 Kimi no kaori zu tsu to (sagashiteru) 你的气味 是我一直 (在寻找的) boku no koe yo todoke (aishiteru) 你可以听到我的声音吗 (我爱你) ima doko ni iruno (moonlight princess) 你现在在哪里 (月光公主) boku no princess 我的公主 kotaete, Answer for me 回答我 Imasugu, Answer for me 就是现在 Kotaete, Answer for me 回答我 Yasashiku, Answer for me 温柔地 To oiyo sora kakenuketeku 从遥远的夜空中传来 nagareboshi ni nega uyoima 我向流星祈祷 aitai to sasayaku 我低声诉说我想见你 (tsutae teyo starlight) (请告诉她吧,星光) toki ga sugite otona ni naru 在时光穿越中我长大了 boku no yatsuto kizu ita no sa 我终于了解了一切 tarinai kakera ni 这一点点还不够 (sobaniite sweetheart) Serach for your love, ginga unabara 寻找你的爱 Search for your love, furehata da you 寻找你的爱 Search for your love, kuru o shisani 寻找你的爱 nagasarete yuku Kimi no kaori zu tsu to (sagashiteru) 你的气味 是我一直 (在寻找的) boku no koe yo todoke (aishiteru) 你可以听到我的声音吗 (我爱你) ima doko ni iruno (moonlight princess) 你现在在哪里 (月光公主) boku no princess 我的公主 kotaete, Answer for me 请回答我, Imasugu, Answer for me 就现在 Kotaete, Answer for me 请回答我 Yasashiku, Answer for me 温柔地 Kotaete, Answer for me 请回答我 Imasugu, Answer for me 就现在 Kotaete, Answer for me 请回答我 Yasashiku, Answer for me 温柔地

美少女战士 search for your love里日文歌词的罗马音打在每句话的空格里

手打很辛苦的,那个……きみはいつも かがやいてたkimi ha itsumo kagayaite taえがおひとつ ちいさなほしegao hitotsu chiisana hoshiたいせつにしてたよ (えいえんのStarlight)taisetsu ni shite ta yo (eien no Starlight)あのひぼくは まもれなくてano hi boku ha mamore nakuteくやしなみだ こらえただけkuyashi namida koraeta dakeいたみがのこるよ (わすれないSweet heart)itami ga nokoru yo (wasurenai Sweet heart)Search for you LOVE そらのすいしょうSearch for you LOVE sora no suishouSearch for you LOVE なかないでくれSearch for you LOVE nakanaide kureSearch for you LOVE ほんとうは だきしめたいのさSearch for you LOVE hontou ha dakishime tai no saきみのかおりずっと (さがしてる)kimi no kaori zutto (sagashite ru)ぼくのこえよとどけ (あいしてる)boku no koeyo todoke (aishite ru)いまどこにいるの (Moonlight Princess)ima dokoni iruno (Monnlight Princess)ぼくのプリンセスboku no purinsesuこたえて Answer for me いますぐ Answer for mekotaete Answer for me imasugu Answer for meこたえて Answer for me やさしく Answer for mekotaete Answer for me yasashiku Answer for meSearch for you LOVE…Search for you LOVE…Search for you LOVE…Search for you LOVE…とおいよぞら かけぬけてくtooi yozora kakenukete kuながれぼしに ねがうよいまnagareboshi ni negauyo imaあいたいとささやく (つたえてよStarlight)aitai to sasayaku (tsutaete yo Starlight)ときがすぎて おとなになるtoki ga sugite otona ni naruぼくはやっと きづいたのさboku ha yatto kiduita no saたりないかけらに (そばにいてSweet heart)tarinai kakera ni (soba ni ite Sweet heart)Search for you LOVE ぎんのうなばらSearch for you LOVE kin no unabaraSearch for you LOVE ふねはただようSearch for you LOVE fune ha tadayouSearch for you LOVE くるおしさに ながされてゆくSearch for you LOVE kuruoshisa ni nagasarete yukuきみのかおりずっと (さがしてる)kimi no kaori zutto (sagashite ru)ぼくのこえよとどけ (あいしてる)boku no koeyo todoke (aishite ru)いまどこにいるの (Moonlight Princess)ima doko ni iru no (Moonlight Princess)ぼくのプリンセスboku no purinsesuこたえて Answer for me いますぐ Answer for mekotaete Answer for me imasugu Answer for meこたえて Answer for me やさしく Answer for mekotaete Answer for me yasashiku Answer for meこたえて Answer for me いますぐ Answer for mekotaete Answer for me imasugu Answer for meこたえて Answer for me やさしく Answer for mekotaete Answer for me yasashiku Answer for meこたえて Answer for me いますぐ Answer for mekotaete Answer for me imasugu Answer for meこたえて Answer for me やさしく Answer for mekotaete Answer for me yasashiku Answer for me

谁有search for you love的歌词?

Search For You Love歌手:Three Lights 专辑:Sailormoon Star Search for your loveSearch for your lovekimi wa itsumo kagayaitetaegao hitotsu chiisa na hoshitaisetsu ni shite tayo(eien no Starlight)anohi bokuwa mamorenakutekuyashi namida koraeta dakeitamiga nokoruyo(wasurenai Sweet heart)Search for your lovesora no suishouSearch for your lovenakanaidekureSearch for your lovehontou wadakishimetai nosakimino kaori zutto(sagashiteru)bokunokoeyo todoke(aishiteru)imadokoni iruno(Moonlight Princess)boku no purincecukotaete Answer for meimasugu Answer for mekotaete Answer for meyasashiku Answer for metooiyosora kakenuketekunagareboshininega uyoimaaitaito sasayaku(tsutaeteyo Starlight)tokiga sugiteotona ni naruboku wa yattokizu itanosatarinai kakerani(sobaniite Sweet heart)Search for your lovegin nounabaraSearch for your lovefune wa tadayouSearch for your lovekuru oshisa ninagasarete yukukimino kaori zutto(sagashiteru)bokuno koeyo todoke(aishiteru)ima dokoni iruno(Moonlight Princess)bokuno PURINSESUkotaete(Answer for me)ima sugu(Answer for me)kotaete(Answer for me)yasashiku(Answer for me)kotaete(Answer for me)imasugu(Answer for me)kotaete(Answer for me)yasashiku(Answer for me)kotaete(Answer for me)imasugu(Answer for me)

win10中找不到“WSearch”程序怎么办?

WSearch“划词搜索”是一个由Visual C++工具编写的广告程序。“划词搜索”变种b运行后,在%WinDir%System32文件夹下释放出deskipn.dll文件。病毒名称:Adware.WSearch.b中 文 名:“划词搜索”变种b病毒长度:可变病毒类型:广告程序危害等级:影响平台:Win 9X/ME/NT/2000/XP/2003建议用360或其他杀毒软件进行查杀彻底删除这个文件。
 首页 上一页  1 2 3 4 5 6 7  下一页  尾页