1

大きな添付ファイルを使用してElasticsearchにインデックス付けされているオブジェクトがありますが、これを_sourceに保存したくありません。マッピングで「excludes」を指定すると修正されましたが(SOでここに回答された別の質問のおかげで)、フィルター/アナライザーのカスタム設定を追加すると、どういうわけか除外が壊れてしまい、タイヤの問題なのか、それともタイヤの問題なのか疑問に思います。除外を別の方法で指定する必要があるだけです。

コードは次のとおりです。

settings analysis: {
  filter: {
    ngram_filter: {
      type: "nGram",
      min_gram: 2,
      max_gram: 12
    }
  },
  index_analyzer: {
    index_ngram_analyzer: {
      type: "custom",
      tokenizer: "standard",
      filter: ["lowercase", "ngram_filter"]
    }
  },
  search_analyzer: {
    search_ngram_analyzer: {
      type: "custom",
      tokenizer: "standard",
      filter: ["standard", "lowercase", "ngram_filter"]
    }
  }
} do
  mapping :_source => { :excludes => ['attachment'] } do
    indexes :id, :type => 'integer'
    [:title, :abstract].each do |attribute|
      indexes attribute, type: 'string', analyzer: 'ngram_analyzer'
    end
    indexes :attachment, :type => 'attachment'
  end
end

「:excludes」を含む「mapping」行は、「settings」ブロックを追加するまでトリックを実行していたため、それに関する何かが除外を無視する原因になりました。そこに何かアイデアはありますか?前もって感謝します!

4

1 に答える 1

3

これを試して:

settings :analysis => {
  :filter  => {
    :ngram_filter => {
      :type => "nGram",
      :min_gram => 2,
      :max_gram => 12
    }
  },
  :analyzer => {
    :index_ngram_analyzer => {
      :type  => "custom",
      :tokenizer  => "standard",
      :filter  => ["lowercase", "ngram_filter"]
    },
    :search_ngram_analyzer => {
      :type  => "custom",
      :tokenizer  => "standard",
      :filter  => ["standard", "lowercase", "ngram_filter"]
    }
  }
} do
  mapping :_source => { :excludes => ['attachment'] } do
    indexes :id, :type => 'integer'
    [:title, :abstract].each do |attribute|
      indexes attribute, :type => 'string', :index_analyzer => 'index_ngram_analyzer', :search_analyzer => 'search_ngram_analyzer'
    end
    indexes :attachment, :type => 'attachment'
  end
end
于 2012-08-11T02:44:10.980 に答える