我最近使用ElasticSearch 2.开始当我已了解分析 VS not_analyzed在映射,not_analyzed应在存储更好(https://www.elastic.co/blog/elasticsearch-storage-the-true-story-2.0和HTTPS ://www.elastic.co/blog/elasticsearch-storage-the-true-story).出于测试目的,我创建了一些索引,其中包含所有String字段(默认情况下),然后我创建了一些其他索引,其中所有字段都是not_analyzed,当我检查索引的大小并且我看到索引时出现了not_analyzed字符串大 40%!! 我在每个索引中插入相同的文档(35000个文档).
知道为什么会这样吗?我的文档是简单的JSON文档.我在每个文档中有60个字符串字段,我想将其设置为not_analyzed,我尝试将每个字段设置为未分析并创建动态模板.
我编辑添加映射,虽然我认为它没有什么特别之处:
{
"mappings": {
"my_type" : {
"_ttl" : { "enabled" : true, "default" : "7d" },
"properties" : {
"field1" : {
"properties" : {
"field2" : {
"type" : "string", "index" : "not_analyzed"
}
more not_analyzed String fields here
...
...
...
}
Run Code Online (Sandbox Code Playgroud)
not_analyzed字段仍然被编入索引.他们事先没有对它们进行任何转换("分析" - 用Lucene的说法).
举个例子:
(文件1)"快速的棕色狐狸跳过懒狗"
(Doc 2)"像狐狸一样懒惰"
- 标准分析器创建的简化发布列表(
analyzed字符串字段的默认值- 标记化,小写,删除停用词):
"brown": [1]
"dog": [1]
"fox": [1,2]
"jumped": [1]
"lazy": [1,2]
"over": [1]
"quick": [1]
Run Code Online (Sandbox Code Playgroud)
30个字符的字符串数据
- 由
"index": "not_analyzed"以下内容创建的简化发布列表:
"The quick brown fox jumped over the lazy dog": [1]
"Lazy like the fox": [2]
Run Code Online (Sandbox Code Playgroud)
62个字符的字符串数据
分析导致输入被标记化并标准化,以便能够使用术语查找文档.
但结果是,文本单元被缩减为标准化术语(与整个字段相比not_analyzed),并且所有文档中的所有冗余(标准化)术语都折叠为单个逻辑列表,从而节省了通常所有的空间由重复的术语和停用词消耗.
| 归档时间: |
|
| 查看次数: |
2615 次 |
| 最近记录: |