0

我写这篇文章是因为我是新的 ES 用户,我不确定我是否正确理解了显式映射中字符串字段的索引和存储属性。

我想要一个包含互联网站点列表的 ES 索引。文档类型“site”有 3 个字段:url、content、inner_note

我将在“内容”字段中搜索包含给定短语的文档。我将检索在“url”字段中具有特定 url 的单个文档。“inner_note”字段仅供我内部使用,我不会使用此字段来搜索/检索文档。

我准备了以下映射:

"site" : {
    "properties" : {
        "url" : {"type" : "string","store" : "no", "index" : "not_analyzed"},
        "content" : {"type" : "string", "store" : "yes", "index" : "analyzed"},
        "inner_note" : {"type" : "string","store" : "no", "index" : "no"}
    }

我有以下问题:

  1. 我是否为我的场景选择了最佳的“存储”和“索引”属性?

  2. 通过 url 字段检索文档是否与通过 ID 检索一样快?与传统 SQL 版本相比:如果我想通过 WHERE url = 检索 SQL 表中的单行?我会在 url 列上创建 SQL 索引。

如果有任何帮助,我将不胜感激!

4

1 回答 1

3

您发布的映射看起来很适合您的用例。

您想同时搜索 url 和内容,因此它们被编入索引(默认)。在内容分析时不会分析 URL,因此您可以在其上运行全文查询。

第三个字段既没有索引也没有存储,但您仍然可以将其作为字段的一部分取回,该_source字段包含您提交的整个文档。

在您的情况下,通过 id 检索文档与通过 url 检索文档相同,因为未分析该字段。事实上 id 在内部是 lucene 文档中的一个非分析字段,就像 url 字段一样。

于 2013-07-04T21:40:27.380 回答