gpt4 book ai didi

lucene - not_indexed 字段存储在索引中

转载 作者:行者123 更新时间:2023-11-29 02:48:49 25 4
gpt4 key购买 nike

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

我有一个字段是一个 URL - 我不想查询或过滤它,只是检索它。

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

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

我错过了什么?

最佳答案

我刚开始在 stack exchange 上发帖,但相信我能帮上一点忙!

这里有几个注意事项:

分析

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

此外,在特定字段进行查询时,它将不可搜索:(无命中)

"query": {
"term": {
"url": "http://www.domain.com/exact/url/that/was/sent/to/elasticsearch"
}
}

*这里“url”是字段名。

然而,该字段仍可在 _all 字段中搜索:(可能有命中)

"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”对所有字段进行搜索,因此我确保设置“include_in_all”:“false”

注意:任何未明确指定字段的查询都将针对 _all 字段执行。

存储

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

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

curl -XGET http://path/index_name/type_name/id?fields=url,another_field

终于……

我会让 elasticsearch 存储您的整个文档(默认情况下)并使用以下映射。

"type_name": {
"properties": {
"url": {
"type": "string",
"index": "no",
"include_in_all": "false"
},
// other fields' mappings
}
}

来源:elasticsearch documentation

关于lucene - not_indexed 字段存储在索引中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16911633/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com