我正在撰写这篇文章,因为我是新的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"}
}
我有以下问题:
我是否为我的方案选择了最佳的“商店”和“索引”属性?
通过url字段检索文档的速度和ID检索的速度一样快吗?与传统的SQL版本相比:如果我想通过WHERE url =?检索SQL表中的单行?我会在url列上创建SQL索引。
我将不胜感激任何帮助!
答案 0 :(得分:3)
您发布的映射看起来很适合您的用例。
您想要同时搜索网址和内容,因此会将其编入索引(默认)。内容不会分析网址,因此您可以对其运行全文查询。
第三个字段既没有编入索引也没有存储,但您仍然可以将其作为_source
字段的一部分取回,该字段包含您提交的整个文档。
通过id检索文档与在您的情况下通过url检索文档相同,因为不分析该字段。实际上,id在lucene文档中是一个非分析字段,与url字段完全相同。