[英]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.