当前位置: 首页 > 面试题库 >

not_indexed字段存储在索引中

朱风史
2023-03-14
问题内容

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

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

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

这使我感到困惑,是否有一种方法可以存储某些字段,而又不占用更多的存储空间,而又不占用其他字段的索引呢?

我想念什么?


问题答案:

我是刚参加堆栈交换的新手,但相信我可以帮上忙!

这里有一些注意事项:

分析

因为您不想做额外的工作,所以应该设置"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"停止。这可能对您来说不是问题,因为您不太可能会_all错误地使用URL 搜索该字段。

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

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

储存

默认情况下,elasticsearch将存储您的整个文档(在您发送时未进行分析),并且它将在匹配的_source字段中返回给您。如果您将其关闭(如果您的elasticsearch数据库可能越来越大?),则需要显式设置"store": "yes"为单独存储字段。(有一点需要注意到的是,store采用yesnotruefalse-它绊倒了我)

注意:如果执行此操作,则需要显式请求要返回的字段。例如:

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文档



 类似资料:
  • 我想知道推荐的方法是什么来过滤掉从存储和索引发送到Elasticsearch的一些字段? 我想过滤我们的一些字段,使其不在Elasticsearch中被索引。您可能会问,为什么从一开始就将它们发送到Elasticsearch。不幸的是,它是通过另一个不接受任何过滤机制的应用程序发送的。因此,应在索引时解决过滤问题。以下是我们所做的,但我不确定这些步骤会产生什么后果: 1-禁用ES模板中的动态映射(

  • 问题内容: 在文档中,某些类型(例如数字和日期)指定存储默认为no。但是该字段仍然可以从json中检索。 令人困惑。这是否表示_source? 有没有办法根本不存储字段,而只是对其建立索引并进行搜索? 问题答案: 默认情况下,不存储任何字段类型。只有领域。这意味着您始终可以取回发送给搜索引擎的内容。即使您要求特定的字段,elasticsearch也会为您解析该字段并将其退还给您。 您可以根据需要禁

  • 在Solr围绕原子更新的文档中,他们提到一个字段应该是非索引和非存储的。 https://lucene.apache.org/solr/guide/7_6/updating-parts-of-documents.html#in-place-update-example 只有当要更新的字段满足以下三个条件时,才使用该方法执行原子更新操作: 是非索引(indexed=“false”)、非存储(stor

  • 现在,据我所知,我必须使用两个QueryParser,因为我需要使用两个不同的分析器来搜索两个字段,每个字段一个。我想不出怎么把它们结合起来。我想要的是一个TopDoc,其中的结果是排序的相关性得分,这是一些组合的2相关性得分从搜索的文件名字段和搜索的内容字段。Lucene7.4是否为您提供了轻松解决此问题的方法? 附:这是我很长一段时间以来的第一个帖子,如果不是永远的话。请注明任何格式或内容问题

  • 问题内容: 这可能是一个非常愚蠢的问题,但是对数据库表中的布尔字段建立索引是否会有很多好处? 在常见情况下,例如标记为“无效”的“软删除”记录,因此大多数查询都包含,这将有助于对该字段进行单独索引,还是应将其与其他常见搜索字段组合在一起?不同的索引? 问题答案: 没有。 您可以对要搜索的字段具有较高的选择性/基数进行索引。几乎所有表都消除了布尔字段的基数。如果有的话,它将使您的写入速度变慢(降低的

  • 我已经通过了lucene索引机制。我有一些疑问,我找不到一个直截了当的答案,我仍然对我在几篇参考文献中的阅读感到困惑。 考虑使用Lucene对数据库表进行索引。 假设该表有10列,其中很少有caseid、modifiedby、modifiedtime、casename、legalname等。。。 现在,如果我创建一个索引的情况下,那么在搜索是不是可以搜索的基础上修改字段??? 假设我在2列case