面试题答案
一键面试设置映射属性
- 精准匹配:使用
keyword
类型来实现精准匹配。keyword
类型不会对输入进行分词,所以可以精确匹配完整的文本。 - 模糊匹配:使用
text
类型,并指定合适的分词器。text
类型会对输入进行分词,以便实现模糊匹配。
示例
假设我们有一个索引名为 article_index
,包含一个名为 content
的字段,用于存储文章内容。
- 创建索引并设置映射:
PUT /article_index
{
"mappings": {
"properties": {
"content": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword"
}
}
}
}
}
}
在上述示例中,content
字段被定义为 text
类型,用于模糊匹配;同时通过 fields
子属性定义了一个 keyword
类型的子字段 content.keyword
,用于精准匹配。
- 添加文档:
POST /article_index/_doc/1
{
"content": "这是一篇关于计算机技术的文章,主要介绍了ElasticSearch的使用。"
}
- 精准匹配搜索:
GET /article_index/_search
{
"query": {
"term": {
"content.keyword": "这是一篇关于计算机技术的文章,主要介绍了ElasticSearch的使用。"
}
}
}
- 模糊匹配搜索:
GET /article_index/_search
{
"query": {
"match": {
"content": "计算机技术 ElasticSearch"
}
}
}