天天看点

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

继续阅读