V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
crayonyi
V2EX  ›  Elasticsearch

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

  •  
  •   crayonyi · 2016-08-18 16:25:03 +08:00 · 7251 次点击
    这是一个创建于 3019 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我的数据格式如下:

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

    8 条回复    2016-08-19 05:08:31 +08:00
    ayang23
        1
    ayang23  
       2016-08-18 16:31:07 +08:00
    最新稳定版本就好
    goofansu
        2
    goofansu  
       2016-08-18 16:38:34 +08:00 via iPhone
    这个要在 mapping 里面设 members 为 nested ,否则查出来是错的
    knightdf
        3
    knightdf  
       2016-08-18 16:49:59 +08:00
    members 为 object 类型就可以了
    66beta
        4
    66beta  
       2016-08-18 16:54:10 +08:00
    es 的问题好像是扩展不兼容新版本,要看你用的扩展
    crayonyi
        5
    crayonyi  
    OP
       2016-08-18 17:10:11 +08:00
    @66beta 兼容中文查询就行
    billlee
        6
    billlee  
       2016-08-18 21:41:46 +08:00
    然而 elasticSearch 的列表匹配应该会返回「有一个小于 7 岁的男孩」 AND 「有一个女性」 AND 「 detail 包含『心脏病』」的家庭
    嗯, elasticSearch 的索引其实是把列表 concat 起来的。
    ligyxy
        7
    ligyxy  
       2016-08-18 21:43:55 +08:00 via Android
    DravenJohnson
        8
    DravenJohnson  
       2016-08-19 05:08:31 +08:00
    2.3 版本挺好用的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2653 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 11:39 · PVG 19:39 · LAX 03:39 · JFK 06:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.