天天看點

ElasticSearch 學習筆記:Mapping

本文目錄

1 整體結構

2 Meta

3 Field Type

4 Field Parameter

5 相關文章

官方文檔

1 整體結構

"mappings": {
    "<typeName>": {
        "<meta>": {
            ...
        },
        "<meta>": {
            ...
        },
        "properties": {
            "<fieldName>": {
                "type": "<type>",
                "<parameter>": ...
            },
            ...
        }
    }
}
           

2 Meta

詳細的Meta說明,請參考ElasticSearch Reference > Mapping > Meta-Fields官網。

此處僅簡單介紹幾個比較常用的Meta字段。

2.1 _all

"_all": {
    "enabled": true / false (default)
}
           

若激活該功能,ES會将所有字段值拼接在一起,以空格分隔,儲存在一個大的字元串中。

在查詢時,可以通過_all來進行全字段比對,而不需要指定具體字段,例如:

"query": {
    "match": {
        "_all": "..."
    }
}
           

2.2 _source

"_source": {
    "enabled": true (default) / false
}
           

指定是否儲存使用者傳遞的原始JSON文檔資料,在查詢時,可傳回相應的資料。

3 Field Type

詳細的類型說明,請參考ElasticSearch Reference > Mapping > Field Data Type官網。

4 Field Parameter

此處僅介紹store、doc_values、analyzer和search_analyzer參數。

4.1 store

"store": true / false (default)
           

指明該字段值是否被單獨存儲在ES中,進而,可以獨立于_source存儲,進行單獨擷取。

單獨存儲的字段,可以在查詢時,通過以下方式指定擷取:

"stored_fields": ["<fieldname>","<fieldname>",...]
           

4.2 doc_values

"doc_values": true / false
           

指明該字段值是否以列的形式存儲在document級,進而,有助于sort、aggregations或scripting操作。

對于不同類型字段,預設值不同。

4.3 analyzer/search_analyzer

analyzer指定建立文檔時,用哪種分詞器對字段進行分詞處理;

search_analyzer指定查詢時,查詢條件中,該查詢字段值用哪種分詞器進行分詞處理;

若不指定search_analyzer,則預設使用analyzer指定分詞器,即建立文檔和查詢時,使用相同的分詞器。

5 相關文章

《ElasticSearch 學習筆記:常用内容》

《ElasticSearch 學習筆記:Multi Search》

《ElasticSearch 學習筆記:Reindex》

《ElasticSearch 學習筆記:聚合(Aggregation) - Top Hits》

官方文檔

ElasticSearch Analysis

ElasticSearch Analyzer

繼續閱讀