响应的问题一个接一个:
- 我们需要将传入的请求JSON存储处理,经过。
是和否ElasticSearch允许store JSON objects。如果事先知道JSON结构并且/或者是稳定的(即JSON中的相同键始终具有相同类型),这将起作用。
默认情况下,映射(即集合的模式)为dynamic
,意味着它允许基于插入的值推断模式。假设我们插入此文件:
{"amount": 1.5} <-- insert succeeds
紧接着尝试插入这一个:
{"amount": {"value" 1.5, "currency": "EUR"]} <-- insert fails
ES将错误消息回复:如果你有一个JSON对象
Current token (START_OBJECT) not numeric, can not use numeric value accessors\n at [Source: org.elasticsear[email protected]757a68a8; line: 1, column: 13]
未知结构仍然可以将它们存储在ES中,可以通过使用object
和setting property enabled: false
类型来完成;这不会允许你对这些领域的内容进行任何类型的查询。
- 我们需要使用标识符字段来搜索特定JSON,为此我们创建一个单独的列,对于每行中的表
是。如果标识符是任意字符串,则可以使用keyword
类型的字段完成,如果是整数,则可以使用integer
。
- 对于客户端,它们可能需要搜索JSON柱,我的意思是客户希望基于在JSON某些关键值的一个JSON。
按照1),是和否。如果JSON模式是已知的并且是严格的,那么可以完成。如果JSON结构是任意的,它可以被存储但不会被查询。
虽然我会说ElasticSearch是不适合你的情况,也有一些一些人,使JDBC和ODBC驱动ElasticSearch,显然在某些情况下ElasticSearch可以作为关系数据库。