如何对字符串字段进行索引
您可以使用 Atlas Search string
类型对 string 字段进行索引。您可以使用 Atlas Search phrase、queryString、span、text、wildcard、regex 和 moreLikeThis 操作符查询作为 string
类型进行索引的字段。
如果您启用动态映射,Atlas Search 会自动为 string
类型的字段创建索引。您可以使用 Atlas UI 中的可视化编辑器或 JSON 编辑器为字段编制 string
类型的索引。
查看string
类型的限制
对于 facet 或 autocomplete 查询,您不能使用 Atlas Search string
类型对字段进行索引。在对 Atlas Search 结果进行排序时,您不能使用 string
类型对字段进行索引。相反,您必须使用静态映射将字符串字段作为以下类型进行索引:
stringFacet 类型,用于对字符串字段运行 facet 查询。请注意,对于分面查询,Atlas Search 不会动态对字符串字段进行索引。
autocomplete 类型,用于对字符串字段运行 autocomplete 操作符查询。请注意,对于 autocompletion 查询,Atlas Search 不会动态对字符串字段进行索引。
词元类型,按字符串字段对 Atlas Search 结果进行排序。Atlas Search 不会动态对字符串字段编制索引来对结果进行排序。
token 类型,用于通过 equals、in 和 range 操作符查找查询的精确匹配项。在使用这些操作符进行查询时,Atlas Search 不会动态将字符串字段作为
token
类型进行索引。
重要
Atlas Search不会对分析器词元大小超过32766字节的字符串字段进行索引。如果使用关键字分析器,则不会对超过32766字节的字符串字段编制索引。
为 类型定义索引string
要定义 string
类型的索引,请在 Atlas UI 中选择您的首选配置方法,然后选择数据库和集合。
单击 Refine Your Index 配置索引。
在 Field Mappings 部分中,单击 Add Field 打开 Add Field Mapping 窗口。
单击 Customized Configuration(连接)。
从 Field Name 下拉菜单中选择要索引的字段。
注意
您无法对字段名称开头包含美元 (
$
) 符号的字段创建索引。单击 Data Type(添加数据)下拉列表并选择 String(插入文档)。
(可选)展开并配置该字段的 String Properties。要了解更多信息,请参阅配置
string
字段属性。(可选)单击 Add Multi Field,为该字段配置下列备用分析器设置:
在 Multi Field Name 字段中输入备选分析器的名称。
在 Multi Field Properties 下配置备用分析器的字符串字段属性。要了解更多信息,请参阅配置
string
字段属性。(可选)单击 Add Another Mult Field 并重复步骤 1 和 b,为该字段配置更多分析器。
单击 Add(连接)。
以下是 string
类型的 JSON 语法。将默认索引定义替换为以下内容。要了解有关字段的更多信息,请参阅字段属性。
{ "mappings": { "dynamic": true|false, "fields": { "<field-name>": { "type": "string", "analyzer": "<atlas-search-analyzer>", "searchAnalyzer": "<atlas-search-analyzer>", "indexOptions": "docs|freqs|positions|offsets", "store": true|false, "ignoreAbove": <integer>, "multi": {<string-field-definition>}, "norms": "include|omit" } } } }
配置string
字段属性
Atlas Search string
类型采用以下参数:
选项 | 类型 | 必要性 | 说明 | 默认 |
---|---|---|---|---|
type | 字符串 | 必需 | 标识此字段类型的人类可读标签。值必须是 string 。 | |
analyzer | 字符串 | Optional | ||
searchAnalyzer | 字符串 | Optional | ||
indexOptions | 字符串 | Optional | offsets | |
store | 布尔 | Optional | 该标记指示是否在索引中存储确切的文档文本以及分析的值。值可以是 为了减少索引大小和性能资源使用量,我们建议将 | true |
ignoreAbove | int | Optional | 要进行索引的字段值中的最大字符数。如果字段值大于指定的字符数,则 Atlas Search 不会进行索引。 | |
multi | 字符串字段定义 | Optional | ||
norms | 字符串 | Optional | 该字符串指定评分时是在结果中包括还是忽略字段长度。字段长度是由分析器为字段生成的词元数量决定的。值可以是以下值之一:
如果值为 如果值为 | include |
string
类型尝试示例
以下索引定义示例使用 sample_mflix.movies 集合。如果您的集群上已加载示例数据,则可以使用 Atlas 用户界面中的可视化编辑器或 JSON 编辑器来配置索引。选择首选配置方法后,选择数据库和集合并优化索引以添加字段映射。
下面的索引定义将 title
字段中的字符串值索引编制为 Atlas Search string
类型:
在 Add Field Mapping 窗口中,从 Field Name 下拉列表中选择 title。
单击 Data Type(添加数据)下拉列表并选择 String(插入文档)。
查看 String Properties 的默认设置。
单击 Add(连接)。
将默认索引定义替换为以下索引定义。
{ "mappings": { "dynamic": false, "fields": { "title": { "type": "string" } } } }
除了默认的 lucene.standard
分析器之外,以下索引定义还使用 lucene.english
和 lucene.french
分析器为 fullplot
字段中的字符串值编制索引:
在 Add Field Mapping 窗口中,从 Field Name 下拉列表中选择 fullplot。
单击 Data Type(添加数据)下拉列表并选择 String(插入文档)。
查看 String Properties 的默认设置。
单击 Add Multi Field,在 Multi Field Name 字段中输入
english
,然后配置以下 Multi Field Properties:索引分析器选择lucene.english
lucene.language
。Search Analyzer选择lucene.english
lucene.language
。单击 Add Another Multi Field,在 Multi Field Name 字段中输入
french
,然后配置以下 Multi Field Properties:索引分析器选择lucene.french
lucene.language
。Search Analyzer选择lucene.french
lucene. language
。单击 Add(连接)。
将默认索引定义替换为以下索引定义。
{ "mappings": { "dynamic": false, "fields": { "fullplot": { "type": "string", "multi": { "english": { "type": "string", "analyzer": "lucene.english" }, "french": { "type": "string", "analyzer": "lucene.french" } } } } } }