Elastic Search 不在 rails 中显示数据

马赫什·梅斯塔

我有一个文档模型,我正在使用弹性搜索

我的文档模型如下

    require 'elasticsearch/model'

    class Document < ApplicationRecord
    include Elasticsearch::Model
    include Elasticsearch::Model::Callbacks
    belongs_to :user

    def self.search(query)
    __elasticsearch__.search(
    {
      query: {
      multi_match: {
      query: query,
      fields: ['name', 'service', 'description', 'tat', 'status']
    }
   },
   highlight: {
    pre_tags: ['<em>'],
    post_tags: ['</em>'],
    fields: {
      name: {},
      service: {},
      description: {},
      tat: {},
      status: {}
    }
   }
   }

  ) 
    end

  settings index: { number_of_shards: 1 } do
  mappings dynamic: 'false' do
  indexes :name, analyzer: 'english', index_options: 'offsets'
  indexes :service, analyzer: 'english'
  indexes :description, analyzer: 'english'
  indexes :tat, analyzer: 'english'
  indexes :status, analyzer: 'english'
  end
  end


 end

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

我的搜索控制器如下:

 def search
 if params[:q].nil?
  @documents = []
 else
  @documents = Document.search(params[:q])
 end
 end

我的搜索视图如下:

  <h1>Document Search</h1>

  <%= form_for search_path, method: :get do |f| %>
  <p>
  <%= f.label "Search for" %>
  <%= text_field_tag :q, params[:q] %>
  <%= submit_tag "Go", name: nil %>
  </p>
  <% end %>

  <ul>
  <% @documents.each do |document| %>
  <li>
  <h3>
    <%= link_to document.try(:highlight).try(:name) ? 
  document.highlight.name[0].html_safe : document.name,
    controller: "documents", action: "show", id: document._id %>
  </h3>
  <% if document.try(:highlight).try(:description) %>
    <% document.highlight.description.each do |snippet| %>
      <p><%= snippet.html_safe %>...</p>
    <% end %>
  <% end %>
  <% if document.try(:highlight).try(:service) %>
    <% document.highlight.service.each do |snippet| %>
      <p><%= snippet.html_safe %>...</p>
    <% end %>
  <% end %>
  <% if document.try(:highlight).try(:tat) %>
    <% document.highlight.tat.each do |snippet| %>
      <p><%= snippet.html_safe %>...</p>
    <% end %>
  <% end %>
  <% if document.try(:highlight).try(:status) %>
    <% document.highlight.status.each do |snippet| %>
      <p><%= snippet.html_safe %>...</p>
    <% end %>
  <% end %>


 </li>

  <% end %>
 </ul>

现在,当我使用租金作为查询参数名称中的值运行查询时,即使存在带有姓名簿的记录,它也不会在我的搜索页面上显示数据。为我的搜索控制器行运行调试器

  @documents = Document.search(params[:q])

这就是我得到的

 <Elasticsearch::Model::Response::Response:0x007fcdde617430 @klass=[PROXY] 
 Document(id: integer, name: string, service: string, stamp_required: boolean, 
 default_price: string, tat: string, automated: boolean, template_url: string, 
 status: string, description: string, priorty: string, user_id: integer, 
 created_at: datetime, updated_at: datetime), @search=#

<Elasticsearch::Model::Searching::SearchRequest:0x007fcdde6175e8 @klass=
[PROXY] Document(id: integer, name: string, service: string, stamp_required:    
boolean, default_price: string, tat: string, automated: boolean, template_url: 
string, status: string, description: string, priorty: string, user_id: 
integer, created_at: datetime, updated_at: datetime), @options={}, 
@definition={:index=>"documents", :type=>"document", :body=>{:query=>
{:multi_match=>{:query=>"Rental Agreement", :fields=>["name", "service", 
"description", "tat", "status"]}}, :highlight=>{:pre_tags=>["<em>"], 
:post_tags=>["</em>"], :fields=>{:name=>{}, :service=>{}, :description=>{}, 
:tat=>{}, :status=>{}}}}}>>

我需要显示搜索结果。我究竟做错了什么?

祖扎伊

Document.__elasticsearch__.create_index! force: true 实际上被迫创建索引并清除那里的所有记录。

还有一些其他方法可以创建索引,例如:

index_klass.__elasticsearch__.client.indices.create(index: 'index_name')

您可以传递更多选项,例如映射/设置,但您的数据将始终保持不变且不会被触及!

问候

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

update_all之后的Rails Elastic Search重新索引数据

来自分类Dev

update_all之后的Rails Elastic Search重新索引数据

来自分类Dev

Asciifolding无法正常工作Elastic Search Rails

来自分类Dev

Asciifolding无法正常工作Elastic Search Rails

来自分类Dev

Rails不在数组中

来自分类Dev

在Elastic Search中组合聚合

来自分类Dev

Schdulers.elastic不在Reactor中创建新线程

来自分类Dev

AWS Elastic Beanstalk PHP日志不在CloudWatch中

来自分类Dev

Fields_for表单字段不在Rails表单中显示

来自分类Dev

从R将数据导入Elastic Search

来自分类Dev

不在 rails sql 数据库中调用表参数

来自分类Dev

jQuery不在Rails生产环境中执行

来自分类Dev

Elastic Search中function_score的语法

来自分类Dev

Elastic Search中嵌套字段的术语聚合

来自分类Dev

Elastic Search中的多“匹配短语”查询

来自分类Dev

Nest Elastic Search中的嵌套聚合

来自分类Dev

Elastic Search中的自动完成匹配

来自分类Dev

无法在Elastic Search中检索嵌套对象

来自分类Dev

使用curl在Elastic Search中删除类型

来自分类Dev

在Elastic Search中检索排名最高的文档

来自分类Dev

如何在 Elastic Search 中编写条件

来自分类Dev

recyclerview 不在片段中显示 sqlite 数据

来自分类Dev

Angular 不在 UI 中显示数据

来自分类Dev

Rails实例变量在开发中显示,但不在Heroku上显示

来自分类Dev

将日期范围添加到Google Search Appliance而不在输入中显示日期范围

来自分类Dev

如何在Elastic Search上传输和索引Cassandra数据?

来自分类Dev

使用Glue将数据输入到AWS Elastic Search

来自分类Dev

使用Elastic Search Nest插入数据的性能问题

来自分类Dev

使用 Elastic Search 1.7 过滤聚合数据

Related 相关文章

热门标签

归档