ruby-on-rails - ElasticSearch Rails - 设置自定义分析器

标签 ruby-on-rails ruby ruby-on-rails-4 elasticsearch elasticsearch-plugin

我通过 elasticsearch-rails ( https://github.com/elasticsearch/elasticsearch-rails ) 在 Rails 4 中使用 ElasticSearch

我有一个带有电子邮件属性的用户模型。

我正在尝试使用文档中描述的“uax_url_email”分词器:

class User < ActiveRecord::Base
  include Elasticsearch::Model
  include Elasticsearch::Model::Callbacks

  settings analysis: { analyzer: { whole_email: { tokenizer: 'uax_url_email' } } } do
    mappings dynamic: 'false' do
      indexes :email, analyzer: 'whole_email'
    end
  end

end

我按照 wiki ( https://github.com/elasticsearch/elasticsearch-rails/wiki) 和 elasticsearch-model 文档 (https://github.com/elasticsearch/elasticsearch-rails/wiki) 中的示例得出了这一点。

这是行不通的。如果我直接查询 elasticsearch:

curl -XGET 'localhost:9200/users/_mapping

它返回:

{
  "users": {
    "mappings": {
      "user": {
        "properties": {
          "birthdate": {
            "type": "date",
            "format": "dateOptionalTime"
          },
          "created_at": {
            "type": "date",
            "format": "dateOptionalTime"
          },
          "email": {
            "type": "string"
          },
          "first_name": {
            "type": "string"
          },
          "gender": {
            "type": "string"
          },
          "id": {
            "type": "long"
          },
          "last_name": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "role": {
            "type": "string"
          },
          "updated_at": {
            "type": "date",
            "format": "dateOptionalTime"
          }
        }
      }
    }
  }
}

最佳答案

这最终成为我创建索引的方式的问题。我在尝试:

User.__elasticsearch__.client.indices.delete index: User.index_name
User.import

我希望这会删除索引,然后重新导入值。但是我需要做的是:

User.__elasticsearch__.create_index! force: true
User.import

关于ruby-on-rails - ElasticSearch Rails - 设置自定义分析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25258121/

相关文章:

ruby-on-rails - 区域设置更改时如何使片段缓存过期?

ruby-on-rails - Rails : Has_many through, 嵌套复选框,并验证 presence_of

ruby - 灵活的 rake 任务

ruby - 什么时候分配一个声明为卡住的字符串(如果有的话?)

ruby-on-rails - 为什么我不能用重载方法在 define_method 中调用 super?

performance - Heroku测功机何时使用交换内存?

ruby-on-rails - Rails 4 - 当前布局的名称?

ruby-on-rails - 如何在 Rails 中实现复合主键

php - 在 MAMP 上运行 mysql 的问题

ruby-on-rails - rails : Selecting unique label values with its ID