0

我是 elasticsearch 新手,我很难从 mysql 切换到 elasticsearch

我的 Mysql 我的表看起来像这样

    表:test_request
    +---------+-------------+--------------+---------- -+------------+------------+
    | test_id | 设备名称 | ip_address | 用户名 | 时间戳 | 显示标志 |
    +---------+-------------+--------------+---------- -+------------+------------+
    | 1 | d1 | 0.0.0.0 | 管理员 | | 是 |
    +---------+-------------+--------------+---------- -+------------+------------+

    
表:test_results +----+---------+-----+------------+---- ---------------------+---------------------------- ------+------------+ | 编号 | test_id | 命令行 | xml | json | 另一个json | 显示标志 | +----+---------+-----+------------+---- ---------------------+---------------------------- ------+------------+ | 1 | 1 | c1 | 一些xml格式的数据| {“一些”:“这里的json”} | {“一些”:“这里有另一个 json”} | 是 | +----+---------+-----+------------+---- ---------------------+---------------------------- ------+------------+ | 2 | 1 | c2 | 一些xml格式的数据| {“一些”:“这里的json”} | {“一些”:“这里有另一个 json”} | 是 | +----+---------+-----+------------+---- ---------------------+---------------------------- ------+------------+ | 3 | 1 | c2 | 一些xml格式的数据| {“一些”:“这里的json”} | {“一些”:“这里有另一个 json”} | 是 | +----+---------+-----+------------+---- ---------------------+---------------------------- ------+------------+

表中的字段test_id和表中的字段是。和字段是数据类型。test_requestidtest_resultsauto increment
jsonanother jsonJSON

我正在尝试使用elasticsearch_dsl创建索引及其映射。我正在阅读文档以弄清楚如何实现这一目标,但我无法弄清楚三件事

  1. 如何获取 test_id 到auto increment
  2. 如何制作JSON数据类型的字段
  3. 建立两者之间关系的最佳方法(我部分理解嵌套可能会有所帮助)但寻找正确的方法来做到这一点
4

1 回答 1

1

auto incrementid 列在 SQL 表中执行以下规则:

  1. 它们是行的唯一标识符
  2. 它们允许在表之间链接行

要在弹性搜索中实现这一点,您不需要auto increment字段。您可以将文档添加到 elasticsearch 索引,elasticsearch 会为其添加一个唯一的 id。

对于 JSON 字段,只需使用object datatype

设置关系的选项很少,例如 SQL 连接:

  1. 您可以在文档中test_results放置nested对象test_request
  2. 您可以使用连接数据类型字段将test_results文档链接到test_request同一索引中的文档
  3. 您可以将每test_result一个与它的test_request. 没关系,这test_request将被存储多次。无论如何,Elasticsearch 主要用于搜索。

您选择哪个版本取决于您。这取决于,您将如何使用您的数据,您将执行什么样的查询。您可以将所有test_results与 一起收集test_request并与单个调用一起存储,还是您需要存储test_request并依次添加test_results

连续更新嵌套字段意味着每次都要重新索引整个文档。Join datatype查询成本很高。

非规范化增加了空间使用,但如果test_results每个请求的数量不大,那么它可能是最好的选择。

于 2019-10-30T20:39:45.177 回答