对于多位置查询,我正在将Firebase
数据重新编入ElasticSearch
索引。
但是当我保存由id
生成的ref.child('Users').push()
自动时,例如:-KrjGdtUqG8LkTvTZKXO
被编入小写字符串(krjgdtuqg8lktvtzkxo
)。
因此,当我按照ElassticSearch中的ID对用户进行排序时,订单与Firebase不同。
如何正确索引id
以保存Firebase的订单?
答案 0 :(得分:2)
您的问题是,当您使用elasticsearch而没有为您的字段定义分析器时,elasticsearch将默认使用标准分析器。标准分析器会将您的内容缩小。
要解决您的问题,您应该定义自定义分析器或使用在索引时不会小写内容的分析器。
我将向您展示如何使用另一种分析仪而不是标准分析仪:
{
"mappings":{
"yourIndex":{
"properties":{
"theFieldWithYourID":{
"analyzer":"whitespace"
}
}
}
}
}
在您的映射中,您可以为所需的字段定义另一个分析器。白色空间分析器不会小写内容:White space analyser documentation
修改强> 一种更干净的方式来做你想要的是在你的映射中指定你正在使用一个关键字,并且它不应该被编入索引:
PUT yourIndex/_mapping/yourDocType
{
"properties":{
"YourFireBaseID":{
"type":"keyword",
"index":"not_analyzed"
}
}
}