我正在为多位置查询重新索引Firebase
数据到ElasticSearch
。ElasticSearch:阻止小写索引
但是,当我保存由ref.child('Users').push()
例如生成id
汽车:-KrjGdtUqG8LkTvTZKXO
被索引为小写字符串(krjgdtuqg8lktvtzkxo
)。
因此,当我通过ElassticSearch中的ID对用户进行排序时,订单与Firebase不同。
我该如何正确编制id
来保留Firebase订单?
我正在为多位置查询重新索引Firebase
数据到ElasticSearch
。ElasticSearch:阻止小写索引
但是,当我保存由ref.child('Users').push()
例如生成id
汽车:-KrjGdtUqG8LkTvTZKXO
被索引为小写字符串(krjgdtuqg8lktvtzkxo
)。
因此,当我通过ElassticSearch中的ID对用户进行排序时,订单与Firebase不同。
我该如何正确编制id
来保留Firebase订单?
你的问题是,当你在没有为你的领域定义分析器的情况下使用elasticsearch时,elasticsearch将默认使用标准分析器。标准分析仪将小写您的内容。
要解决您的问题,您应该定义一个自定义分析器或使用不会在索引时间小写内容的分析器。
我将向你展示如何使用其它的分析比标准之一:
{
"mappings":{
"yourIndex":{
"properties":{
"theFieldWithYourID":{
"analyzer":"whitespace"
}
}
}
}
}
这里在映射定义其它的分析你想要的领域。白色空间分析仪没有小写内容:White space analyser documentation
编辑: 一个更清洁的方式做你想要的是在映射您正在使用关键字来指定,它不应该被索引:
PUT yourIndex/_mapping/yourDocType
{
"properties":{
"YourFireBaseID":{
"type":"keyword",
"index":"not_analyzed"
}
}
}
您是否想要将firebase中的id作为elasticsearch文档的id或作为elasticsearch文档中字段的值编入索引? – mel
我想索引它作为一个字段。 –