确保在 elasticsearch 中自动索引时不会发生重复

Make sure duplicates does not happen while automatic indexing in elasticsearch

我有很多源正在流入我的服务器。

Example document is as follows -
{
"company" : "sony",
"size" : "10X",
"name" : "Kakhee pants",
"color" : "red"
}

字段 "company" 和 "name" 将保持唯一。那就是我不想要 2 个具有相同公司和名称但颜色和大小不同的文件。 我如何在 Elasticsearch 中建立它?

最好的策略是根据这三个字段的值创建 docID。 例如,对于本文档 -

{
"company" : "sony",
"size" : "10X",
"name" : "Kakhee pants",
"color" : "red"
}

将docID设为sony+Kakhee_pants+red 然后将大小和颜色抽象到属性数组中。

{
  "company": "sony",
  "name": "Kakhee pants",
  "color": "red",
  "attributes": [
    {
      "size": "10X",
      "color": "red"
    }
  ]
}

现在,当您插入文档时,制作一个 upsert 当您在索引文档时如果文档不存在并且您在更新属性字段时文档确实存在。