4

我正在使用 CouchDB-River 插件为 ealsticsearch 编制索引。目前我正在尝试实现对用户的搜索,其中简化的文档看起来像这样:

{
  username: "john",
  firstname: "John",
  lastname: "Doe",
  email: "john.doe@example.com",
  password: "someHash"
}

我不希望密码在 ES 中被索引,因为我认为这样做没有任何用处,但也许我在这里错了(我对 ES 还很陌生)?

我确实通过执行以下命令设置了河流:

curl -XPUT 'http://localhost/_river/st_user/_meta' -d '{
  "type" : "couchdb",
  "couchdb" : {
    "host" : "localhost",
    "port" : 5984,
    "db" : "sportstracker_usertest",
    "ignore_attachments":true,
    "filter" : null
    }
  },
  "index" : {
    "index" : "tracker",
    "type" : "user",
    "bulk_size" : "100",
    "bulk_timeout" : "10ms"
  }
}'

你能通过 River(脚本过滤器)或 ES 的映射来实现吗?

4

1 回答 1

2

根据Elasticsearch 的 CouchDB River 文档

{
  "type" : "couchdb",
  "couchdb" : {
    "host" : "localhost",
    "port" : 5984,
    "db" : "sportstracker_usertest",
    "ignore_attachments":true,
    "filter" : "NAME_OF_FILTER_IN_COUCHDB",
    "filter_params" : {
      "FIRST_PARAMETER_ON_THAT_FILTER" : "VALUE_YOU_WANT_TO_PASS",
      "userStatus" : "online",
      "minSubscriptors" : "1"
    }
  },
  "index" : {
    "index" : "tracker",
    "type" : "user",
    "bulk_size" : "100",
    "bulk_timeout" : "10ms"
  }
}

尽管过滤器只能过滤整个文档,但在 CouchDB 1.2 之后,可以提供一个视图作为过滤器

除了使用过滤器,Elasticsearch 还有一个script钩子来预处理输入数据。可以在这个钩子中修改文档,Elasticsearch 会存储修改后的版本

{
  "type" : "couchdb",
  "couchdb" : {
    "script" : "ctx.doc.password = undefined"
  },
  "index" : {
  }
}
于 2014-03-08T13:34:06.020 回答