Elasticsearch 自动完成整数字段
Elasticsearch autocomplete integer field
我正在尝试在数字字段上实现自动完成功能(它在 ES 中的实际类型是 long
)。
我在客户端使用 jQuery UI 自动完成小部件,它的 source
函数使用前缀词向 Elasticsearch 发送查询以获取数字(例如, 5) 自动完成选项。
我正在使用的查询如下所示:
{
"size": 0,
"query": {
"prefix": {
"myField": "<term>"
}
},
"aggs": {
"myAggregation": {
"terms": {
"field": "myField",
"size": 5
}
}
}
}
这样如果 myField
具有不同的值:[1, 15, 151, 21, 22]
,并且 term
是 1
,那么我希望从 ES 获得带键的桶[1, 15, 151]
.
问题是这似乎不适用于数字字段。对于上面的例子,我得到一个带有键 1
的桶,如果 term
是 15
我得到一个带有键 15
的桶,即它只returns 完全匹配。相反,它非常适合 string
类型的字段。
我猜我需要为 myField
做一些特殊的映射,但我希望映射尽可能通用,同时让自动完成功能对映射进行最少的更改(请注意 -我正在查询的索引可能是一个通用索引,在我的应用程序外部,因此只有在新映射是通用和标准的情况下,我才能更改其中的 type/field 映射。
我有哪些选择?
我要做的是在您的整数字段中创建一个 string
子字段,如下所示:
{
"myField": {
"type": "integer",
"fields": {
"to_string": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
那么您的查询需要更改为下面的查询,即查询字符串字段,但从整数字段中检索术语聚合
{
"size": 0,
"query": {
"prefix": {
"myField.to_string": "1"
}
},
"aggs": {
"myAggregation": {
"terms": {
"field": "myField",
"size": 5
}
}
}
}
注意你也可以创建一个完全独立的字段,不一定是子字段,关键是一个字段需要整数值到运行 terms
聚合上和其他字段需要 运行 prefix
查询的字符串值。
我正在尝试在数字字段上实现自动完成功能(它在 ES 中的实际类型是 long
)。
我在客户端使用 jQuery UI 自动完成小部件,它的 source
函数使用前缀词向 Elasticsearch 发送查询以获取数字(例如, 5) 自动完成选项。
我正在使用的查询如下所示:
{
"size": 0,
"query": {
"prefix": {
"myField": "<term>"
}
},
"aggs": {
"myAggregation": {
"terms": {
"field": "myField",
"size": 5
}
}
}
}
这样如果 myField
具有不同的值:[1, 15, 151, 21, 22]
,并且 term
是 1
,那么我希望从 ES 获得带键的桶[1, 15, 151]
.
问题是这似乎不适用于数字字段。对于上面的例子,我得到一个带有键 1
的桶,如果 term
是 15
我得到一个带有键 15
的桶,即它只returns 完全匹配。相反,它非常适合 string
类型的字段。
我猜我需要为 myField
做一些特殊的映射,但我希望映射尽可能通用,同时让自动完成功能对映射进行最少的更改(请注意 -我正在查询的索引可能是一个通用索引,在我的应用程序外部,因此只有在新映射是通用和标准的情况下,我才能更改其中的 type/field 映射。
我有哪些选择?
我要做的是在您的整数字段中创建一个 string
子字段,如下所示:
{
"myField": {
"type": "integer",
"fields": {
"to_string": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
那么您的查询需要更改为下面的查询,即查询字符串字段,但从整数字段中检索术语聚合
{
"size": 0,
"query": {
"prefix": {
"myField.to_string": "1"
}
},
"aggs": {
"myAggregation": {
"terms": {
"field": "myField",
"size": 5
}
}
}
}
注意你也可以创建一个完全独立的字段,不一定是子字段,关键是一个字段需要整数值到运行 terms
聚合上和其他字段需要 运行 prefix
查询的字符串值。