elasticsearch 生产环境用哪个版本好?能否支持 json list 的嵌套查询?

2016-08-18 16:25:03 +08:00
 crayonyi

我的数据格式如下:

[
	{
		'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 。

7276 次点击
所在节点    Elasticsearch
8 条回复
ayang23
2016-08-18 16:31:07 +08:00
最新稳定版本就好
goofansu
2016-08-18 16:38:34 +08:00
这个要在 mapping 里面设 members 为 nested ,否则查出来是错的
knightdf
2016-08-18 16:49:59 +08:00
members 为 object 类型就可以了
66beta
2016-08-18 16:54:10 +08:00
es 的问题好像是扩展不兼容新版本,要看你用的扩展
crayonyi
2016-08-18 17:10:11 +08:00
@66beta 兼容中文查询就行
billlee
2016-08-18 21:41:46 +08:00
然而 elasticSearch 的列表匹配应该会返回「有一个小于 7 岁的男孩」 AND 「有一个女性」 AND 「 detail 包含『心脏病』」的家庭
嗯, elasticSearch 的索引其实是把列表 concat 起来的。
ligyxy
2016-08-18 21:43:55 +08:00
DravenJohnson
2016-08-19 05:08:31 +08:00
2.3 版本挺好用的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/300209

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX