ElasticSearch _all和_source
ElasticSearch 有兩個內部結構_all和_source
_all是所有欄位的大雜燴,預設情況下,每個欄位的內容,都會複製到_all欄位.
這樣可以忽略欄位資訊進行搜尋,非常方便.
但是這樣帶來了額外的儲存壓力和CPU處理壓力.
在預設情況下,開啟_all和_source
這樣索引下來,佔用空間很大.
根據我們單位的情況,我覺得可以將需要的欄位儲存在_all中,然後使用IK分詞以備查詢,其餘的欄位,則不儲存.
並且禁用_source欄位.(也可以透過_source includes或者excludes 指定或者排除欄位)
這裡採用了動態對映的功能(dynamic_templates),符合條件的欄位,直接採用動態對映中預先的配置.
這裡動態對映匹配所有欄位,將_all禁用。
然後有需要的欄位,再逐個開啟.
索引之後,效果非常明顯.磁碟佔用減少了一半還多.
動態對映 {name}表示文件中原始的欄位名稱,{dynamic_type}表示原始文件的型別
動態對映在實際使用中,除了匹配欄位名稱,還可以匹配型別。
"match_mapping_type": "string"
動態對映如果設定在 "_default_" 則表示規則應用在所有型別的索引上.
雖然禁用_source,指定加入_all的欄位,可以大幅減少磁碟空間佔用,
但是查詢會麻煩一些。原來可以直觀看到的資料沒有了.
而且預設情況下,沒有足夠的資訊顯示.
所以查詢顯得麻煩一些,使用如下的方式:
_all是所有欄位的大雜燴,預設情況下,每個欄位的內容,都會複製到_all欄位.
這樣可以忽略欄位資訊進行搜尋,非常方便.
但是這樣帶來了額外的儲存壓力和CPU處理壓力.
在預設情況下,開啟_all和_source
- {
- "mappings": {
- "sod_song_ksc": {
- "_source": {
- "enabled": true
- },
- "_all": {
- "enabled": true,
- "analyzer": "ik"
- },
- "properties": {
- "SongID": {
- "type": "long",
- "store": "yes",
- "index": "not_analyzed"
- },
- "Name": {
- "type": "multi_field",
- "fields": {
- "Name": {
- "type": "string",
- "store": "yes",
- "index": "analyzed",
- "analyzer": "ik"
- },
- "raw": {
- "type": "string",
- "store": "yes",
- "index": "not_analyzed"
- }
- }
- },
- "SingerName": {
- "type": "string",
- "store": "yes",
- "index": "analyzed",
- "analyzer": "stop"
- }
- }
- }
- }
- }
這樣索引下來,佔用空間很大.
根據我們單位的情況,我覺得可以將需要的欄位儲存在_all中,然後使用IK分詞以備查詢,其餘的欄位,則不儲存.
並且禁用_source欄位.(也可以透過_source includes或者excludes 指定或者排除欄位)
- {
- "mappings": {
- "sod_song_ksc": {
- "dynamic_templates": [
- {
- "all_field": {
- "mapping": {
- "index": "no",
- "store": "yes",
- "type": "{dynamic_type}",
- "include_in_all": false
- },
- "match": "*"
- }
- }
- ],
- "_source": {
- "enabled": false
- },
- "_all": {
- "enabled": true,
- "analyzer": "ik"
- },
- "properties": {
- "SongID": {
- "type": "long",
- "store": "yes",
- "index": "not_analyzed",
- "include_in_all": true
- },
- "Name": {
- "type": "multi_field",
- "fields": {
- "Name": {
- "type": "string",
- "store": "yes",
- "index": "analyzed",
- "analyzer": "ik"
- },
- "raw": {
- "type": "string",
- "store": "yes",
- "index": "not_analyzed",
- "include_in_all": true
- }
- }
- },
- "SingerName": {
- "type": "string",
- "store": "yes",
- "index": "analyzed",
- "analyzer": "stop",
- "include_in_all": true
- }
- }
- }
- }
- }
這裡採用了動態對映的功能(dynamic_templates),符合條件的欄位,直接採用動態對映中預先的配置.
這裡動態對映匹配所有欄位,將_all禁用。
然後有需要的欄位,再逐個開啟.
索引之後,效果非常明顯.磁碟佔用減少了一半還多.
動態對映 {name}表示文件中原始的欄位名稱,{dynamic_type}表示原始文件的型別
動態對映在實際使用中,除了匹配欄位名稱,還可以匹配型別。
"match_mapping_type": "string"
動態對映如果設定在 "_default_" 則表示規則應用在所有型別的索引上.
雖然禁用_source,指定加入_all的欄位,可以大幅減少磁碟空間佔用,
但是查詢會麻煩一些。原來可以直觀看到的資料沒有了.
而且預設情況下,沒有足夠的資訊顯示.
所以查詢顯得麻煩一些,使用如下的方式:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-2103996/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- LeetCode之All Paths From Source to Target(Kotlin)LeetCodeKotlin
- source和.命令的區別
- `FULL JOIN` 和 `UNION ALL`
- source 和export 命令的區別Export
- sql中union和union allSQL
- 表連線 join和(+)、union和uion allUI
- union all和union的區別
- union和union all的區別
- union 和union all 使用區別
- All in one入門之All in one和三種PVE、ESXI、Windows Server方案WindowsServer
- Elasticsearch 安裝和使用Elasticsearch
- ElasticSearch模板和別名Elasticsearch
- sql中union和union all的用法SQL
- SQL UNION 和 UNION ALL 操作符SQL
- SQL Union和SQL Union All用法(轉)SQL
- groovy-gradle-setting.gradle和sourceGradle
- Elasticsearch 技術分析(九):Elasticsearch的使用和原理總結Elasticsearch
- 【ElasticSearch篇】--ElasticSearch從初識到安裝和應用Elasticsearch
- elasticsearch和kibana安裝Elasticsearch
- elasticsearch 查詢(match和term)Elasticsearch
- MySQL和Elasticsearch使用場景MySqlElasticsearch
- sql中UNION和UNION ALL的區別SQL
- Oracle 的 INSERT ALL和INSERT FIRSTOracle
- .net source code
- git add all和git add .區別Git
- async/await 和 promise/promise.all 的示例AIPromise
- INSERT ALL 和INSERT FIRST 的區別
- Glibc all-in-one 和 patchelf使用筆記筆記
- docker in allDocker
- Elasticsearch 5.6 原理和使用總結Elasticsearch
- RabbitMQ和Elasticsearch的使用筆記MQElasticsearch筆記
- 使用Spring Boot和Elasticsearch教程Spring BootElasticsearch
- Elasticsearch 5.0和ELK/Elastic Stack指南Elasticsearch
- Elasticsearch、MongoDB和Hadoop比較。ElasticsearchMongoDBHadoop
- Elasticsearch-BulkRequest和BulkProcessor簡述Elasticsearch
- ElasticSearch - 基礎概念和對映Elasticsearch
- shell中的source和直接執行sh的區別
- maven 打包時將 source 和 javadoc 一起打包MavenJava