是否可以将ElasticSearch配置为接受较新的JSON规范?
我需要在JSON中表示正数,负数和无符号数,以便在ElasticSearch中建立索引。
例如
[
{ "confidence": 0},
{ "confidence": 0.417763},
{ "confidence": -0.296771},
]
RFC 7158将支持这一点:
minus = %x2D ; -
plus = %x2B ; +
zero = %x30 ; 0
我找不到相应的配置,所以我有一个解决方法。 将每个名为“信心”的字段都转换为
没有负数(0-1)的范围
{"type": "integer_range", "gte":0, "lte":1}
对象中的scaled_float,它使用单独的字段指示符号
{
"properties": {
"confidence": {
"type": "scaled_float",
"scaling_factor": 10000000
},
"negative": {
"type": "boolean"
}
}
}
json-schema在PUT映射中似乎被接受。
{
"$schema": "http://json-schema.org/schema#",
"mappings": {
...
}
{
{
"acknowledged" : true,
"shards_acknowledged" : true,
"index" : "bakeoff-rfc"
}
我正在使用ES 6.2.2,这是我的云提供商所支持的最新版本。
答案 0 :(得分:2)
您可以做的是将您的置信度字段映射为float
或double
,然后在源文档中将它们添加为字符串。
像这样创建索引映射:
PUT rfc7158
{
"mappings": {
"doc": {
"properties": {
"confidence": {
"type": "float"
}
}
}
}
}
然后像这样添加您的数据,就不会出错:
POST rfc7158/doc/_bulk
{ "index": {}}
{ "confidence": "0" }
{ "index": {}}
{ "confidence": "-0.296771" }
{ "index": {}}
{ "confidence": "+0.8723734" }
{ "index": {}}
{ "confidence": "0.7672323" }
运行以下聚合时,您会看到+0.8723734
是最大值,-0.296771
是期望的最小值
POST rfc7158/_search
{
"size": 0,
"aggs": {
"minconfidence": {
"min": {
"field": "confidence"
}
},
"maxconfidence": {
"max": {
"field": "confidence"
}
}
}
}