我在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'的所有属性吗?或者它只适用于第一个?
谢谢!