有没有办法在 ElasticSearch Array 数据类型中将属性类型定义为关键字?
Is there a way to define attribute type as Keyword in ElasticSearch Array data type?
我正在为一个大型数据集编制索引,该数据集具有特定实体的多个名称字段。我已经定义了类型数组的名称字段,并在其中添加了大约 4 个名称。一些名称之间有空格,并且它们正在被标记化。我可以避免吗?
我知道对于字符串,我们在 Elastic 中有文本和关键字类型,但是当我将数组作为我的数据类型时,如何将类型定义为关键字?默认情况下,所有数组字段都被视为文本类型。我希望它们被视为关键字类型,这样它们在索引时就不会被标记化。
预期:如果我将 "Hello World" 存储在数组中,我应该能够搜索 "Hello World".
当前行为:它以不同的方式存储 hello 和 world,因为它对其进行标记化。
弹性搜索中没有数组的数据类型。每当你发送一个数组作为 x 类型的 属性 的值时,那么 属性 就变成一个只接受 x[ 类型的值的数组=31=].
例如,您创建了一个 属性,如下所示:
{
"tagIds": {
"type": "integer"
}
}
并且您使用以下值索引文档:
{
"tagIds": [124, 452, 234]
}
那么tagIds
自动变成整数数组
对于您的情况,您需要做的就是创建一个字段 name
,类型为 keyword
。并确保始终将一个数组传递给该字段,即使它必须保存单个值以确保它始终是一个数组。以下是您需要的:
映射:
PUT test
{
"mappings": {
"_doc": {
"properties": {
"name": {
"type": "keyword"
}
}
}
}
}
索引文档:
PUT test/_doc/1
{
"name" : ["name one"]
}
我正在为一个大型数据集编制索引,该数据集具有特定实体的多个名称字段。我已经定义了类型数组的名称字段,并在其中添加了大约 4 个名称。一些名称之间有空格,并且它们正在被标记化。我可以避免吗?
我知道对于字符串,我们在 Elastic 中有文本和关键字类型,但是当我将数组作为我的数据类型时,如何将类型定义为关键字?默认情况下,所有数组字段都被视为文本类型。我希望它们被视为关键字类型,这样它们在索引时就不会被标记化。
预期:如果我将 "Hello World" 存储在数组中,我应该能够搜索 "Hello World".
当前行为:它以不同的方式存储 hello 和 world,因为它对其进行标记化。
弹性搜索中没有数组的数据类型。每当你发送一个数组作为 x 类型的 属性 的值时,那么 属性 就变成一个只接受 x[ 类型的值的数组=31=].
例如,您创建了一个 属性,如下所示:
{
"tagIds": {
"type": "integer"
}
}
并且您使用以下值索引文档:
{
"tagIds": [124, 452, 234]
}
那么tagIds
自动变成整数数组
对于您的情况,您需要做的就是创建一个字段 name
,类型为 keyword
。并确保始终将一个数组传递给该字段,即使它必须保存单个值以确保它始终是一个数组。以下是您需要的:
映射:
PUT test
{
"mappings": {
"_doc": {
"properties": {
"name": {
"type": "keyword"
}
}
}
}
}
索引文档:
PUT test/_doc/1
{
"name" : ["name one"]
}