首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为`+` RFC7159配置`+` RFC7159?

为`+` RFC7159配置`+` RFC7159?
EN

Stack Overflow用户
提问于 2018-06-26 19:47:25
回答 1查看 37关注 0票数 2

是否有一种方法可以配置ElasticSearch以接受更新的JSON规范?

为了在ElasticSearch中进行索引,我需要用JSON表示正数、负号和无符号数。

例如:

代码语言:javascript
复制
[
    { "confidence":   0},
    { "confidence":   0.417763},
    { "confidence":   -0.296771},
]

RFC 7158将支持这一点:

代码语言:javascript
复制
minus = %x2D                ; -
plus  = %x2B                ; +
zero  = %x30                ; 0

我找不到这方面的配置,所以我有一个解决办法。将每个名为“置信度”的字段转换为

  • 没有负数的范围(0-1) {"type":"integer_range","gte":0,"lte":1}
  • 对象中使用单独字段表示符号的scaled_float。 {“属性”:{“信任”:{“类型”:"scaled_float","scaling_factor":10000000 },“否定”:{“类型”:“布尔”}

json模式似乎在PUT映射中被接受。

代码语言:javascript
复制
{
  "$schema": "http://json-schema.org/schema#",
  "mappings": {
    ...
   }
{

{
  "acknowledged" : true,
  "shards_acknowledged" : true,
  "index" : "bakeoff-rfc"
}

我正在使用ES 6.2.2,这是我的云提供商支持的最新版本。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-27 03:47:33

您可以做的是将您的信任字段映射为floatdouble,然后在源文档中将它们添加为字符串。

创建如下索引映射:

代码语言:javascript
复制
PUT rfc7158
{
  "mappings": {
    "doc": {
      "properties": {
        "confidence": {
          "type": "float"
        }
      }
    }
  }
}

然后像这样添加数据,就不会出现错误:

代码语言:javascript
复制
POST rfc7158/doc/_bulk
{ "index": {}}
{ "confidence": "0" }
{ "index": {}}
{ "confidence": "-0.296771" }
{ "index": {}}
{ "confidence": "+0.8723734" }
{ "index": {}}
{ "confidence": "0.7672323" }

运行以下聚合时,您将看到+0.8723734是最大的,-0.296771是预期的min

代码语言:javascript
复制
POST rfc7158/_search  
{
  "size": 0,
  "aggs": {
    "minconfidence": {
      "min": {
        "field": "confidence"
      }
    },
    "maxconfidence": {
      "max": {
        "field": "confidence"
      }
    }
  }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51050392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档