使用elasticsearch使用以下设置(或修改设置)使用标签匹配文档的最佳方法是什么?
我的用户在firebase数据库中,他们有相关的标签来定义他们的兴趣:
"users" : {
"bruce" : {
"martial art" : "Jeet Kune Do",
"name" : "Bruce Lee",
"nick" : "Little Phoenix",
"tags" : {
"android" : true,
"ios" : true
}
},
"chan" : {
"account_type" : "contractor",
"martial art" : "Kung Fu",
"name" : "Jackie Chan",
"nick" : "Cannonball",
"tags" : {
"ios" : true
}
},
"chuck" : {
"martial art" : "Chun Kuk Do",
"name" : "Carlos Ray Norris",
"nick" : "Chuck"
}}
使用Flashlight + Firebase管理SDK我在Bonsai / heroku上保持最新的索引,据说可以帮助我匹配具有相似兴趣或相关产品的用户。
"firebase": {
"aliases": {},
"mappings": {
"user": {
"properties": {
"name": {
"type": "string"
},
"tags": {
"properties": {
"android": {
"type": "boolean"
},
"ios": {
"type": "boolean"
}
}
}
}
}
}...
现在,我可以使用某些标签组合查询用户:
{
"query": {
"bool": {
"must" : {
"type" : {
"value" : "user"
}
},
"should": [
{
"term": {
"tags.ios": true
}
},
{
"term": {
"tags.android": true
}
}
],
"minimum_should_match" : 1
}}}
这很棒,但我正在寻找的方法是:
我觉得因为我在弹性搜索方面是新手,所以我的目标是错误的。也许数据建模的方式?
问题是firebase有点限制了这一点,例如我不能拥有数组,所以这使得标签建模有点奇怪,结尾甚至更奇怪的索引数据...也许一种方法可能是操纵数据之前将它插入索引?