ElasticSearch - 显式映射中字符串字段的索引和存储属性

时间:2013-07-04 15:05:02

标签: elasticsearch

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

我希望有一个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索引。

  3. 我将不胜感激任何帮助!

1 个答案:

答案 0 :(得分:3)

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

您想要同时搜索网址和内容,因此会将其编入索引(默认)。内容不会分析网址,因此您可以对其运行全文查询。

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

通过id检索文档与在您的情况下通过url检索文档相同,因为不分析该字段。实际上,id在lucene文档中是一个非分析字段,与url字段完全相同。