Mapping(映射)
映射是定义文档及其包含的字段如何存储和索引的过程。
每个文档都是字段的集合,每个字段都有自己的数据类型(data type)。在映射数据时,创建一个映射定义,其中包含与文档相关的字段列表。映射定义还包括元数据字段( metadata fields),如_source字段,它自定义如何处理文档关联的元数据。
使用动态映射和显式映射来定义数据。每种方法都提供了不同的好处,这取决于您在数据旅程中的位置。例如,显式映射不希望使用默认值的字段,或者更好地控制创建哪些字段。然后,您可以允许Elasticsearch动态添加其他字段。
请注意:在7.0.0之前,映射定义包括一个类型名。Elasticsearch 7.0.0和以后的版本不再接受默认映射。请参见删除映射类型(Removal of mapping types)。
尝试映射选项
在搜索请求中定义运行时字段(Define runtime fields in a search request)以试验不同的映射选项,并通过在搜索请求期间覆盖映射中的值来修复索引映射值中的错误。
Mapping parameters(映射参数)
下面的页面提供了字段映射使用的各种映射参数的详细解释:
以下映射参数对某些或所有字段数据类型是通用的:
boost:
单个字段可以在查询时被自动提升——计算更多的相关分数,boost参数如下:
PUT my-index-000001
{
"mappings": {
"properties": {
"title": {
"type": "text",
"boost": 2 # 标题字段上匹配的权重是内容字段的两倍,内容字段的默认增益为1.0。
},
"content": {
"type": "text"
}
}
}
}
请注意:这种提升仅适用于术语查询(前缀、范围和模糊查询不进行提升)。
您可以通过在查询中直接使用boost参数来达到同样的效果,例如下面的查询(带有字段time boost):
POST _search
{
"query": {
"match": {
"title": {
"query": "quick brown fox"
}
}
}
}
等价于:
POST _search
{
"query": {
"match": {
"title": {
"query": "quick brown fox",
"boost": 2
}
}
}
}