- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我在映射中将一个字符串字段指定为not_analyzed
。如果再将"store":"yes"
添加到映射,ElasticSearch会复制存储吗?我对not_analyzed
字段的理解是,它们不是通过分析器运行的,没有按原样进行索引,但是客户端可以对其进行匹配。因此,如果一个字段同时是not_analyzed
和store:yes
,则可能导致ElasticSearch保留该字符串的两个副本。
我的问题:
not_analyzed
和store:yes
,是否将重复存储该字符串? 最佳答案
您在lucene中混合了索引字段和存储字段的概念,lucene是Elasticsearch建立在其之上的库。
当字段进入反向索引时,该字段将被索引,这是Lucene用来提供强大而快速的全文本搜索功能的数据结构。如果要搜索字段,则必须为其编制索引。在为字段建立索引时,您可以决定是按原样对其进行索引还是要对其进行分析,这意味着要确定要应用于它的 token 生成器,这将生成 token 列表(单词)和 token 列表可以修改生成的 token (甚至添加或删除一些 token )的过滤器。索引字段的方式会影响您在该字段上的搜索方式。如果您为一个字段建立索引但不对其进行分析,并且其文本由多个单词组成,则仅查找该特定文本(包括空格)即可找到该文档。
当您希望能够检索字段时,将存储该字段。假设Lucene也提供某种存储,这与倒排索引本身没有任何关系。
当您使用lucene搜索时,您会返回匹配的文档ID列表。然后,您可以从它们的存储字段中检索一些文本,即从字面上显示为搜索结果的文本。如果您不存储字段,那么您将永远无法从lucene中将其取回(不过,对于Elasticsearch而言并非如此,因为我将在下面进行解释)。
您可以具有只想搜索但从不显示的字段:已索引且未存储(Lucene中的默认值)。
您可以具有要搜索和检索的字段:已索引并已存储。
您可以具有不想搜索的字段,但是想要检索以显示它们。
因此,这两个数据结构互不相关。如果同时在Lucene中索引和存储字段,则其内容将不会以相同的形式出现两次。当您将存储的字段发送给Lucene时,它们将按原样存储,而索引的字段可能会被分析,并且将成为反向索引的一部分,这是其他内容。使存储的字段可用于特定文档的检索(通过lucene文档ID),而使索引的字段可进行搜索,其结构应按字面意义将文本转换为结果,每个术语均作为关键字,并列出文档列表包含它的ID(发布列表)。
当涉及到Elasticsearch时,情况有所变化。如果您未配置映射中存储的字段(默认值为store:no
),则无论如何默认情况下都可以检索它。发生这种情况是因为elasticsearch始终将发送给它的整个源文档(除非禁用此功能)存储在lucene中,该特殊文档称为_source。
当您使用elasticsearch搜索时,默认情况下会返回整个源字段,但您也可以要求特定字段。在这种情况下,elasticsearch将检查这些特定字段是否存储在lucene中。如果它们是内容,则将从lucene中检索内容,否则,将从lucene中检索_source
存储的字段,将其解析为json(拉解析),并提取那些特定的字段。在第一种情况下,速度可能会快一些,但不一定。如果您的资源确实很大,并且您只想加载几个字段,则将它们配置为存储在lucene中可能会加快加载过程;另一方面,如果_source
不是那么大,并且您想加载许多字段,那么最好只加载一个存储的字段(_source
),这将导致单个磁盘搜索,解析等。使用_source
字段的情况很好。
要回答您的问题:倒排索引和Lucene存储是两个完全不同的东西。仅当您决定存储字段(映射中的store:yes
)时,您最终才在Lucene中拥有两个相同数据的副本,因为elasticsearch将相同的内容保留在json _source
中,但这与事实无关您正在索引或分析该字段。
关于elasticsearch - ElasticSearch:将 “not_analyzed”字段设置为 “store” :“yes”的影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15299799/
这个问题在这里已经有了答案: NSNumber Literals (5 个答案) 关闭 6 年前。 我正在发出一个 HTTP 请求,我必须在其中发送一个 bool 值。我试过他们两个。 两者的工作方
我使用 FireBug 测试了这两种情况,结果看起来非常相似: >>> var x = {"active": "yes"} >>> x.active "yes" >>> var x = {active
在 Objective-c 中,@YES/@NO 和 YES/NO 有什么区别?每种类型使用什么类型? 最佳答案 @YES 是 [NSNumber numberWithBool:YES] 的缩写形式
我正在编写一个脚本来创建虚拟机,显然我想支持标准的确认/whatif 语义。但是,如果我要创建多台机器,最好能区分"is"和“全部是”,这样我就不必重新确认每台机器。 $pscmdlet.Should
这个问题在这里已经有了答案: In JavaScript, why is "0" equal to false, but when tested by 'if' it is not false by
我需要编写一个正则表达式来验证字符串。如果正则表达式包含以下任何内容,则应传递字符串:y、Y、yes、YES , 1。这些字母可以是任何大小写。我是正则表达式和 JavaScript 的新手。 最佳答
我是网络开发的新手,如果能得到任何帮助,我将不胜感激。我有一个 HTML/CSS slider ,当 slider 处于"is"位置(如名字和主题)时,我想显示更多的文本框字段。如果可能的话,我真的希
bash: $: yes a [some output] then press Ctrl+Z $: yes b [some output] then press Ctrl+Z 然后,执行两
我感兴趣的是能够在 Yes/No 提示符下自动让我的 cmd 输入 Yes: __
以上说明了一切-我将 UITextField 设置为安全,但希望为用户提供使其不安全的选项(因此,如果他们在私有(private)区域中,他们可以确定输入的内容)。但是,假设他们误按了切换开关,并想将
当 ssh hostname 提示 The authenticity of host 'foobar' can't be established. ECDSA key fingerprint is .
如何在自定义 MKAnnotationView 上正确设置半径并允许标注?这会引发异常: 来 self 的自定义 MKAnnotationView 类: - (id)initWithFrame:(CG
如果我有 1200 行,并且我希望我的 120 行说"is"而其余的说“否”,我应该如何将其应用于 Excel 文件?我知道使用: =CHOOSE(RANDBETWEEN(1,2),"Yes","No
我想进行一个查询,返回如下所示的表结果: 列标题是我的一个表格中的字段,下面的数字是该字段的是/否条目数。 我遇到的问题是在行的开头显示是/否。我希望它以这种方式组织,以便更好地根据数据创建图表。 现
这个问题在这里已经有了答案: Literal @YES not working in iOS 5 / Xcode 4.4 (2 个答案) 关闭 7 年前。 使用 XCode 4.4 的 Conver
这段代码: $query = array( "var" => "no", "not_var" => "yes", "var2" => "maybe" ); print http
在我的 Dynamics CRM 机会表单中,我添加了销售配额分配网格。如果在整个网格中输入了四个以上"is",我希望显示一条警告消息(或类似的内容)。例如,假设记录“A”t 有 4 个标记为"is"
This question already has answers here: How do I perform an IF…THEN in an SQL SELECT? (31个答案) 已关闭6年。
考虑以下文档: foo: bar: Yes 根据the spec,这应该解释为Boolean,而不是String。 但是,it seems对此文档产生了相同的解释: foo: bar: 'Ye
在网页的第一页上,它要求用户从下拉列表中选择他们想要的产品类型,并且为每个产品指定一个值 0,1,2...然后,一旦他们继续,他们就会被发送到不同的网页,并根据他们选择的产品在那里我希望单选按钮自动选
我是一名优秀的程序员,十分优秀!