作者回复: 设置为false,会存储在source中。但是不支持对这个字段的搜索。
match_all是查出全部。更准的说是获取全部文档。所以,你的测试是正确的
作者回复: 如果有全文搜索的需求。或者有统计分析的需求,都可以用es作为存储。数据可以在数据库里保存一份,定期同步到es中。然后对一些全文搜索的,对应es实现。
数据库和es同步可以考虑使用logstash的jdbc connector。只需要配置就可以实现增量同步。对于你说的物理删除的记录如何同步es,在logstash中不支持这个功能。但是你可以通过为数据增加isDeleted字段的方式。标记成删除状态。同步到es后 再用程序分别删除。
作者回复: 嗯,关于注释,我的repo里之前已经改成了#
第二个,你的理解完全正确,谢谢你的comments
作者回复: 可用来做term查询的精确匹配或者是用来做terms aggregation
作者回复: 是github的文件无法找到?
作者回复: 扁平指的是不像json那样 具有层级结构
作者回复: logstash会根据记录的时间戳进行同步。当你需要删除记录时,只需要将数据库这条记录的timestamp更新,并通过标记一个字段为isDelated。然后logstash会定期update新的字段到es里
作者回复: 只要index设置成true就有。设置成false,就无法被搜索。
text会分词,其它的不做分词处理而已。
作者回复: 设置成strict,万一有一条数据里带着不存在的字段,写入就会失败。
设置成true,数据可以写入,还会在mapping中增加那个字段的设置。随着时间的流逝,这类数据会导致mapping设定的膨胀
作者回复: 理解正确
作者回复: mapping信息是保存在cluster state里面的。
文件应该放在 nodes/{N}/_state/global-{NNN} 下面
https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-state.html
作者回复: https://github.com/onebirdrocks/geektime-ELK
作者回复: 这个我还真没有碰到过
作者回复: keword是一种字段类型
es的每个字段可以做多字段,例如,你有一个content的字段,类型是text。你可以为他指定一个子字段叫 keyword(也可以取名字叫kw)类型设置成keword,
在做term查询时,就查询content.keyword(或者叫content.kw。
es默认为所有文本都设置成text,并且设置keywoed的子字段