首页 > 解决方案 > 如何在一个 Elasticsearch 索引中索引两个 mongodb 集合

问题描述

我有两个 mongodb 集合TransactionsUsers这是事务示例

{ "_id" : ObjectId("5cdd391e1e4b8f0cb8e17d0f"), "txId" :      
"6910dc01ff167d90e8fe249ce68a5149f82d099345473fab02916068570974bd",  
"sender" : ObjectId("5cdbe473ca52557874005809"), "receiver" :  
 ObjectId("5cdd26a6b2d370061e8435d7"), "senderWalletId" :  
 ObjectId("5cdbe473ca5255787400580a"), "receiverWalletId" : 
 ObjectId("5cdd26a6b2d370061e8435d8"), "status" : "success", "type" : 
 "transfer", "amount" : 3000, "totalFee" : 40, "createdAt" : 
 ISODate("2019-05-16T10:19:10.809Z"), "updatedAt" : 
 ISODate("2019-05-16T10:19:10.809Z"), "__v" : 0 }

这是一个用户示例

{ "_id" : ObjectId("5d010a140f0c30757f59fe18"), "role" : "client",  
"status" : "active", "isPhoneVerified" : true, "personalDocuments" : [ 
], "email" : "example.com", "firstName" : "mm", "lastName" : "mm", 
"phoneNumber" : "0000000", "password" : "$2a$10$.", "pushToken" : 
"cSRdsgJXAc67k-PIKwHvslINb0kAaStVzmYPqeIH5oudVTqppHFjxbGEg2B-
 1Xe8P0iTH0EYB9PHbKKey", "created_at" : 
 ISODate("2019-06-12T14:20:04.338Z"), "updated_at" : 
 ISODate("2019-06-17T13:33:41.613Z"), "__v" : 0, "verifyPhoneCode" : 
 null } 

我已经使用 logstash 和 mongodb-input-plugin 成功地在 ES 中索引了 Transactions 文档,这是 ES 生成的映射

 "puretransactionsmodified" : {
 "mappings" : {
  "doc" : {
    "properties" : {
      "@timestamp" : {
        "type" : "date"
      },
      "@version" : {
        "type" : "text",
        "fields" : {
          "keyword" : {
            "type" : "keyword",
            "ignore_above" : 256
          }
        }
      },
      "__v" : {
        "type" : "long"
      },
      "amount" : {
        "type" : "long"
      },
      "createdAt" : {
        "type" : "date"
      },
      "host" : {
        "type" : "text",
        "fields" : {
          "keyword" : {
            "type" : "keyword",
            "ignore_above" : 256
          }
        }
      },
      "id" : {
        "type" : "text",
        "fields" : {
          "keyword" : {
            "type" : "keyword",
            "ignore_above" : 256
          }
        }
      },
      "log_entry" : {
        "type" : "text",
        "fields" : {
          "keyword" : {
            "type" : "keyword",
            "ignore_above" : 256
          }
        }
      },
      "logdate" : {
        "type" : "date"
      },
      "mongo_id" : {
        "type" : "text",
        "fields" : {
          "keyword" : {
            "type" : "keyword",
            "ignore_above" : 256
          }
        }
      },
      "receiver" : {
        "type" : "text",
        "fields" : {
          "keyword" : {
            "type" : "keyword",
            "ignore_above" : 256
          }
        }
      },
      "receiverWalletId" : {
        "type" : "text",
        "fields" : {
          "keyword" : {
            "type" : "keyword",
            "ignore_above" : 256
          }
        }
      },
      "sender" : {
        "type" : "text",
        "fields" : {
          "keyword" : {
            "type" : "keyword",
            "ignore_above" : 256
          }
        }
      },
      "senderWalletId" : {
        "type" : "text",
        "fields" : {
          "keyword" : {
            "type" : "keyword",
            "ignore_above" : 256
          }
        }
      },
      "status" : {
        "type" : "text",
        "fields" : {
          "keyword" : {
            "type" : "keyword",
            "ignore_above" : 256
          }
        }
      },
      "total" : {
        "type" : "long"
      },
      "totalFee" : {
        "type" : "long"
      },
      "txId" : {
        "type" : "text",
        "fields" : {
          "keyword" : {
            "type" : "keyword",
            "ignore_above" : 256
          }
        }
      },
      "type" : {
        "type" : "text",
        "fields" : {
          "keyword" : {
            "type" : "keyword",
            "ignore_above" : 256
          }
        }
      },
      "updatedAt" : {
        "type" : "date"
      }
    }
    }
   }
  }
 }

当我尝试使用同一个插件对两个集合进行索引以进行某些分析时

 input {
    mongodb {
            uri => 'mongodb://**.**.**.***:27017/db'
            placeholder_db_dir => '/home/jhon/Desktop 
            /userstransactions'
            placeholder_db_name => 'logstash_sqlite.db'
            collection => 'transactions'
            batch_size => 202
            parse_method => "simple"
            }
     mongodb {
            uri => 'mongodb://**.**.**.***:27017/db'
            placeholder_db_dir => '/home/jhon/Desktop
            /userstransactions'
            placeholder_db_name => 'logstash_sqlite.db'
            collection => 'wallets'
            batch_size => 202
            parse_method => "simple"
            }
  }

它没有工作我所拥有的只是交易,我想在由提供的接收者的和字段下拥有,我recieversender这方面的新手,我也尝试过自己映射它但没有工作。transactionnameuser

标签: mongodbelasticsearchlogstashelastic-stack

解决方案


推荐阅读