该字段用于索引全文文本,例如电子邮件的正文或产品的描述。 对这些字段进行analyzed
,即通过分析器将其转换成索引之前的各个术语列表。 分析过程允许Elasticsearch搜索每个全文本字段中的单个单词。 文本字段不用于排序,很少用于聚合(尽管重要的术语聚合是一个显着的例外)。
如果您需要索引结构化内容(如电子邮件地址,主机名,状态代码或标签),则可能您应该使用keyword
字段。 对于代码或标签,您也可能应该使用keyword
字段。
以下是文本字段的映射示例:
PUT my_index
{
"mappings": {
"my_type": {
"properties": {
"full_name": {
"type": "text"
}
}
}
}
}
有时,同时具有全文( text
)和关键字( keyword
)版本是有帮助的:一个用于全文本搜索,另一个用于聚合和排序。 这可以通过多字段实现。
text
字段接受以下参数:
| analyzer
| 分析器应用于analyzed
字符串字段,无论是在索引时间还是在搜索时间(除非被search_analyzer
)。 默认为默认索引分析器或standard
分析器。 |
| boost
| 映射字段级查询时间提升。 接受一个浮点数,默认为1.0
。 |
| eager_global_ordinals
| 是否应该全新加载全局序号? true
或false
(默认)。 对于经常用于(重要)术语聚合的字段,启用此功能是一个好主意。 |
| fielddata
| 是否可以使用内存中的字段数据进行排序,聚合或脚本编写? true
或false
(默认)。 |
| fielddata_frequency_filter
| 此为高级设置,允许在fielddata
启用时决定哪些值加载到内存中。 默认情况下,所有值都被加载。 |
| fields
| 多字段允许以多种方式将相同的字符串值索引到不同的目的,例如用于搜索的一个字段和用于排序和聚合的多字段,或由不同分析器分析的相同字符串值。 |
| include_in_all
| 字段值是否应包含在[_all](https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-all-field.html)
字段中? 接受true
或false
。如果index
设置为no
,或者如果父object
字段将include_in_all,默认
设置为false。
否则默认为true
。 |
| index
| 应该可以搜索该字段吗? 接受true
(默认)或false
。 |
| index_options
| 索引中应存储哪些信息,以便搜索和突出显示。 默认为positions
。 |
| norms
| 在评分查询时是否应考虑字段长度。 接受true
(默认)或false
。 |
| position_increment_gap
| 应该在字符串数组的每个元素之间插入的假项目位置的数量。 默认为在分析器上配置的position_increment_gap
,默认为100
。 100
被选中,因为它阻止了匹配术语与字段值之间的合理大小的间隔(小于100)的短语查询。 |
| store
| 字段值是否应与_source
字段分开存储和检索。 接受true
或false
(默认)。 |
| search_analyzer
| analyzer
应在搜索时使用在analyzed
领域。 默认为analyzer
设置。 |
| search_quote_analyzer
| 在遇到短语时应在搜索时使用的分析器。 默认为search_analyzer
设置。 |
| similarity
| 应该使用哪种评分算法或_相似度_ 。 默认为BM25
。 |
| term_vector
| 是否应为analyzed
字段存储术语向量。 默认为no
。 |
从2.x导入的索引不支持text
。 相反,他们会尝试将text
降级为string
。 这使您可以将现有映射与旧版映射进行合并。 在升级到6.x之前,必须重新生成长命索引,但映射降级可让您有机会按照自己的时间表进行安排。