Elasticsearch文档分词规则及存储格式技术咨询
Elasticsearch字段分词相关问题解答
1. Elasticsearch是否会对title和content等每个字段的内容进行分词?
不一定,这取决于字段的映射类型:
- 当字段为
text类型时,Elasticsearch会自动使用默认的standard分词器对内容进行分词(比如拆分单词、转为小写、去除标点等)。如果是自动创建索引(未手动指定映射),title和content这类文本字段会被默认识别为text类型,同时生成一个对应的keyword子字段(如title.keyword),这个子字段会保留完整字符串,不会分词。 - 若字段是
keyword、integer等非文本类型,内容不会被分词,会作为完整值存储。
2. 是否需要指定特定字段来执行分词操作?
不需要强制指定,但可以通过手动设置字段映射来控制分词行为:
- 如果使用默认的自动映射,符合
text类型特征的字段会自动分词。 - 若需要自定义分词规则(比如使用中文分词器、添加停用词、调整分词逻辑),或者要指定某些字段不分词(设为
keyword类型),则需要手动定义字段映射。例如:
PUT /my_webpages { "mappings": { "properties": { "title": { "type": "text", "analyzer": "standard" // 指定分词器,默认也是standard }, "content": { "type": "text" }, "url": { "type": "keyword" // 该字段不分词,按完整字符串存储 } } } }
3. Elasticsearch分词存储示例格式
Elasticsearch的核心是倒排索引,本质是词元到文档ID的映射(还包含词频、位置等额外信息)。结合你提供的示例文档(假设文档ID为1和2),简化后的倒排索引结构如下:
"getting": [1] "started": [1] "with": [1] "elastic": [1] "search": [1] "popular": [1] "tool": [1] "top": [2] "10": [2] "latest": [2] "techs": [2] "this": [2] "blog": [2] "will": [2] "discuss": [2] "about": [2] "in": [2] "market": [2]
注:默认的standard分词器会将所有词转为小写,所以原文档中的"Elastic"会被处理为"elastic","Techs"转为"techs"。实际存储中每个词元还会包含该词在文档中的出现位置、出现次数等数据,用于精准搜索和评分。
内容的提问来源于stack exchange,提问作者Disha Gupta
相关产品推荐
相关产品推荐

