我的数据格式如下:
[
{
'id': 1,
'name': '户主姓名',
'reason': '致贫原因',
'detail': '家庭情况',
'members': [
{'name': '张 XX', 'card':'身份证号 1', 'age': 20, 'gender':'男'},
{'name': '张 YY', 'card':'身份证号 2', 'age': 18, 'gender':'男'},
{'name': '张 ZZ', 'card':'身份证号 3', 'age': 5, 'gender':'女'}
],
},
{
'id': 2,
'name': '户主姓名',
'reason': '致贫原因',
'detail': '家庭情况',
'members': [
{'name': '张 XX', 'card':'身份证号 1', 'age': 20, 'gender':'男'},
{'name': '张 YY', 'card':'身份证号 2', 'age': 18, 'gender':'男'},
{'name': '张 ZZ', 'card':'身份证号 3', 'age': 5, 'gender':'女'}
],
},
{
'id': 3,
'name': '户主姓名',
'reason': '致贫原因',
'detail': '家庭情况',
'members': [
{'name': '张 XX', 'card':'身份证号 1', 'age': 20, 'gender':'男'},
{'name': '张 YY', 'card':'身份证号 2', 'age': 18, 'gender':'男'},
{'name': '张 ZZ', 'card':'身份证号 3', 'age': 5, 'gender':'女'}
],
}
...
]
需要支持这样的查询:找小于 7 岁的,女孩, detail 关键词中含有心脏病的人。
本来想用阿里云搜索的,发现不支持 json list 的字段,所以想用 elasticsearch 。
1
ayang23 2016-08-18 16:31:07 +08:00
最新稳定版本就好
|
2
goofansu 2016-08-18 16:38:34 +08:00 via iPhone
这个要在 mapping 里面设 members 为 nested ,否则查出来是错的
|
3
knightdf 2016-08-18 16:49:59 +08:00
members 为 object 类型就可以了
|
4
66beta 2016-08-18 16:54:10 +08:00
es 的问题好像是扩展不兼容新版本,要看你用的扩展
|
6
billlee 2016-08-18 21:41:46 +08:00
然而 elasticSearch 的列表匹配应该会返回「有一个小于 7 岁的男孩」 AND 「有一个女性」 AND 「 detail 包含『心脏病』」的家庭
嗯, elasticSearch 的索引其实是把列表 concat 起来的。 |
7
ligyxy 2016-08-18 21:43:55 +08:00 via Android
|
8
DravenJohnson 2016-08-19 05:08:31 +08:00
2.3 版本挺好用的
|