elasticsearch - 使用轮胎的模块的映射和设置

标签 elasticsearch ruby-on-rails-2 tire

我想从另一个模块添加特定模型的设置和映射。那可能吗?如果是,请帮助我如何做到这一点。我试过这个:

文章型号:

class Article < ActiveRecord::Base
  include SearchArticle
end

新模块:
module SearchArticle

  include Tire::Model::Search
  settings :analyzer => {
            :custom_analyzer => {
              'tokenizer' => 'uax_url_email'
            }
    } do
    mapping do
      indexes :name, :boost => 10
      indexes :email, :analyzer => 'custom_analyzer', :boost => 10
    end
  end

end

但是没有创建索引。我收到以下错误。
[2012-10-16 11:42:38,023][WARN ][cluster.metadata         ] [Inza] [search_article] failed to create
org.elasticsearch.index.mapper.MapperParsingException: mapping [search_article]
at org.elasticsearch.cluster.metadata.MetaDataCreateIndexService$1.execute(MetaDataCreateIndexService.java:262)
at org.elasticsearch.cluster.service.InternalClusterService$2.run(InternalClusterService.java:208)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:680)

Caused by: org.elasticsearch.index.mapper.MapperParsingException: Analyzer [custom_analyzer] not found for field [email]
at org.elasticsearch.index.mapper.core.TypeParsers.parseField(TypeParsers.java:76)
at org.elasticsearch.index.mapper.core.StringFieldMapper$TypeParser.parse(StringFieldMapper.java:124)
at org.elasticsearch.index.mapper.object.ObjectMapper$TypeParser.parseProperties(ObjectMapper.java:261)
at org.elasticsearch.index.mapper.object.ObjectMapper$TypeParser.parse(ObjectMapper.java:217)
at org.elasticsearch.index.mapper.DocumentMapperParser.parse(DocumentMapperParser.java:161)
at org.elasticsearch.index.mapper.MapperService.parse(MapperService.java:364)
at org.elasticsearch.index.mapper.MapperService.add(MapperService.java:186)
at org.elasticsearch.cluster.metadata.MetaDataCreateIndexService$1.execute(MetaDataCreateIndexService.java:259)
... 4 more

最佳答案

是的,这是可能的——但不是我在问题中所做的那样。轮胎 gem 所有者 Karmi 建议的答案就在这里

完整答案请引用 this

module Searchable

  def self.included(base)

    p "Included in #{base}"

    base.class_eval do
      include Tire::Model::Search

      tire do
        mapping do
          indexes :title,   type: 'string', analyzer: 'snowball'
        end
      end
    end
  end
end

class Article < ActiveRecord::Base
  include Searchable
end

关于elasticsearch - 使用轮胎的模块的映射和设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12908918/

相关文章:

elasticsearch - 如何获取 PIG 中一组字段的 DISTINCT 值?

lucene - 具有开始和结束时间的 ElasticSearch 直方图和 Kibana

c# - 使用 NEST ElasticSearch 客户端获取不同的值

javascript - 提交表单时,在新选项卡上打开

ruby-on-rails - 为什么Rails.cache不是线程安全的?

ruby-on-rails - 关于utf8的Tire::Search::SearchRequestFailed错误

elasticsearch - Elasticsearch 查询词和评分

ElasticSearch/Logstash/Kibana 如何应对日志流量高峰

solr - 太阳黑子和轮胎 gem 的区别

compatibility - Rails 2.3 和 rspec-rails 兼容性