如何在elasticsearch Nodejs客户端中进行显式映射

时间:2014-02-10 18:54:25

标签: node.js elasticsearch

我在nodejs中使用Javascript客户端进行弹性搜索,但我似乎不太清楚如何使用elasticsearch nodejs模块设置文档类型。

我面临的问题是我从我们供应商的API中提取了一个JSON对象,该对象中的一个属性是“rank”。 Rank是一个浮点值,但无论出于何种原因,供应商都将其作为字符串返回。因此,当我在elasticsearch中输入文档时,elasticsearch也将该属性解释为字符串,我无法执行这样的查询:

curl -XGET 'http://localhost:9200/backlinks/profile/_search?pretty=true' -d '
{ 
    "query" : { 
        "match_all" : {}
    } ,
    "facets": {
        "range1" : {
            "range" : {
                "field" : "rank",
                "ranges" : [
                    {"from" : "5.5", "to": "7.00"}
                ]
            }
        }
    }'

因为它返回以下异常:

java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Number

我知道在创建索引时我可以进行显式映射,但有没有办法使用nodejs模块执行此操作?

我在文档中找不到该选项,并且当API已经存在时,我发现向弹性搜索服务器显式发送GET请求有点麻烦。

另外,显式映射是递归的吗?

说我的供应商发给我这个:

{
  name: 'wallets',
  price: '15.00',
  relatedItems: [{name: 'purses', price:'12.00'}, {name:'bags', price:'11.00'}]
};

如果我像这样对该对象进行显式映射:

price: { 
    type: 'float'
}

那个类型会映射到名为'price'的所有属性吗?或者它只适用于第一个?

谢谢!

0 个答案:

没有答案