簡體   English   中英

列字段上的索引不適用於ElasticSearch

[英]Indexing on column field is not working with ElasticSearch

我正在模型中實現ElasticSearch集成:

require 'elasticsearch/model'
class MissionDef < ActiveRecord::Base
  # field: name (String(40))
  # field: icon (String(2000))
  # field: definition (String)
  # field: public, boolean

  include Elasticsearch::Model
  include Elasticsearch::Model::Callbacks

  def as_indexed_json(options={})
    self.as_json(
     only: [:id, :name]
     )
  end
end

在我的Rails Console中,我做了:

MissionDef.import

MissionDef.first

MissionDef id: 226, ade_channel_key: "d403d658313e6c35ce", name: "Test Mission", icon: "/app/assets/images/badges/Showedup.png", definition: "{}", deleted_at: nil, created_at: "2015-08-04 11:30:08", updated_at: "2015-08-04 11:30:08", container_id: 883, public: true

我的查詢

1)當我使用名稱和ID以外的其他字段值(未編入索引)進行搜索時,會得到搜索結果。 例如:

結果= MissionDef.search'app'---它起作用result.records.count => 1

我猜應該不是這種情況。

2)Missiondef.first.as_indexed_json =>無法正常工作,它使我像JSON一樣將o / p作為整個對象

{“ id” => 226,“ ade_channel_key” =>“ d403d658313e6c35ce”,“名稱” =>“測試任務”,“ icon” =>“ / app / assets / images / badges / Showedup.png”,“定義” =>“ {}”,“ created_at” =>星期二,2015年8月4日11:30:08 UTC +00:00,“ updated_at” =>星期二,2015年8月4日,11:30:08 UTC +00:00,“ container_id“ => 883,” public“ => true}

我以前沒有使用過elasticsearch-rails gem,但是默認情況下,我知道elasticsearch將搜索整個文檔,因此,如果您只想在查詢中指定特定字段。 因此,在您給出的示例中,該app與圖標字段匹配:/ app /assets/images/badges/Showedup.png

嘗試指定要搜索的字段-在此處閱讀其文檔中的更多信息: https : //github.com/elastic/elasticsearch-rails/blob/master/elasticsearch-model/README.md#the-elasticsearch-dsl

因此,在這種情況下,可能類似於:

result = MissionDef.search query: {match:  {name: "app" }}
result.records.count #=> should be 0 this time

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM