首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >not_indexed字段存储在索引中

not_indexed字段存储在索引中
EN

Stack Overflow用户
提问于 2013-06-04 15:01:33
回答 3查看 3.5K关注 0票数 5

我正在尝试优化我的elasticsearch方案。

我有一个字段,这是一个网址-我不想能够查询或过滤它,只是检索它。

我的理解是,定义为"index":"no"的字段不会被索引,但仍然存储在索引中。(参见http://www.slideshare.net/nitin_stephens/lucene-basics中的幻灯片5)这应该与Lucene UnIndexed匹配,对吗?

这让我很困惑,有没有一种方法可以存储一些字段,而不需要占用比内容更多的存储空间,也不会占用其他字段的索引?

我遗漏了什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-06-05 00:34:57

我刚开始在堆栈交换上发帖,但我相信我能帮上一点忙!

这里有几个考虑因素:

分析

因为你不想做额外的工作,所以你应该设置"index": "no"。这意味着该字段将不会通过任何标记器和筛选器运行。

此外,当将查询定向到特定字段时,它将不是可搜索的命中:()

代码语言:javascript
复制
"query": {
    "term": {
        "url": "http://www.domain.com/exact/url/that/was/sent/to/elasticsearch"
    }
}

*这里"url“是字段名。

但是,字段仍然可以在 _all 字段中进行搜索:(可能会有一个匹配)

代码语言:javascript
复制
"query": {
    "term": {
        "_all": "http://www.domain.com/exact/url/that/was/sent/to/elasticsearch"
    }
}

_all字段

默认情况下,每个字段都放在_all字段中。设置"include_in_all": "false"以停止该操作。这对您来说可能不是问题,因为您不太可能错误地搜索带有URL的_all字段。

我正在使用一个模式,其中国家/地区存储为2个字母代码,例如:"NO“表示挪威,并且可能有人使用"NO”对all字段进行搜索,因此我确保设置"include_in_all": "false"

注意:任何没有显式指定字段的查询都将针对_all字段执行。

存储

默认情况下,elasticsearch将存储整个文档(发送时未分析),并在hit的_source字段中返回给您。如果你关闭了它(如果你的elasticsearch数据库变得越来越大?)然后,您需要显式地设置"store": "yes"来单独存储字段。(要注意的一件事是,store使用yesno,而不是truefalse -它把我绊倒了!)

注意:如果这样做,您将需要请求要显式返回给您的字段。例如:

代码语言:javascript
复制
curl -XGET http://path/index_name/type_name/id?fields=url,another_field

终于..。

我将保留elasticsearch来存储整个文档(默认情况下),并使用以下映射。

代码语言:javascript
复制
"type_name": {
    "properties": {
        "url": {
            "type": "string",
            "index": "no",
            "include_in_all": "false"
        },
        // other fields' mappings
    }
}

来源:elasticsearch documentation

票数 15
EN

Stack Overflow用户

发布于 2013-06-05 00:27:52

有两种方法可以将数据输入索引。索引和存储。索引一段数据意味着它被标记化,放在倒排索引中,并且可以进行搜索。存储数据意味着不对其进行标记化、分析或其他操作,也不会将其添加到倒排索引中。它以全文的形式存储在一个完全独立的区域中。它不能被搜索,但可以通过它的文档ID以其原始形式进行检索。

典型的Lucene查询过程是针对索引数据进行查询,并获取匹配文档的后台文档it,然后使用这些文档it检索这些文档的存储数据,并将其显示给用户。

已索引但未存储的数据是可搜索的,但不能以其原始形式检索。

已存储但未编入索引的数据可以在找到命中后检索,但不能搜索。

被索引和存储的数据可以被搜索或检索。

两者都不存在的数据根本不能添加到索引中。

Lucene FAQ中对此进行了一些介绍。

票数 4
EN

Stack Overflow用户

发布于 2013-06-04 19:05:58

您正在寻找'index' => 'not_analyzed'映射选项。

此外,如果使用_source,则不必指定store => false选项。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16911633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档