
我的数据格式如下:
[ { '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 年 8 月 18 日 最新稳定版本就好 |
2 goofansu 2016 年 8 月 18 日 via iPhone 这个要在 mapping 里面设 members 为 nested ,否则查出来是错的 |
3 knightdf 2016 年 8 月 18 日 members 为 object 类型就可以了 |
4 66beta 2016 年 8 月 18 日 es 的问题好像是扩展不兼容新版本,要看你用的扩展 |
6 billlee 2016 年 8 月 18 日 然而 elasticSearch 的列表匹配应该会返回「有一个小于 7 岁的男孩」 AND 「有一个女性」 AND 「 detail 包含『心脏病』」的家庭 嗯, elasticSearch 的索引其实是把列表 concat 起来的。 |
7 ligyxy 2016 年 8 月 18 日 via Android |
8 DravenJohnson 2016 年 8 月 19 日 2.3 版本挺好用的 |