Elasticsearch 是一个基于 Lucene 的分布式搜索和分析引擎,它提供了一个 RESTful API 来进行数据索引、搜索、分析和可视化。在 Elasticsearch 中,数据类型定义了字段如何存储和索引数据。关键字(keyword)数据类型用于存储不可分词的字符串,通常用于精确匹配、聚合和排序。
Elasticsearch 中的关键字数据类型主要有以下几种:
关键字数据类型字段适用于以下场景:
假设我们有一个索引,其中有一个字段 tags
是关键字类型,我们希望查询所有 tags
字段完全匹配某个数组的文档。
PUT /my_index
{
"mappings": {
"properties": {
"tags": {
"type": "keyword"
}
}
}
}
POST /my_index/_doc/1
{
"tags": ["apple", "banana", "cherry"]
}
POST /my_index/_doc/2
{
"tags": ["apple", "banana"]
}
POST /my_index/_search
{
"query": {
"terms": {
"tags": ["apple", "banana", "cherry"]
}
}
}
my_index
,并定义了一个字段 tags
,类型为 keyword
。tags
字段是 ["apple", "banana", "cherry"]
,文档 2 的 tags
字段是 ["apple", "banana"]
。terms
查询来查找 tags
字段完全匹配 ["apple", "banana", "cherry"]
的文档。通过上述示例和解释,你应该能够理解关键字数据类型字段与值数组完全匹配的概念及其应用场景。
领取专属 10元无门槛券
手把手带您无忧上云