Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 默认情况下,文本字段上禁用Fielddata。设置fielddata=true_Ruby On Rails_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Searchkick - Fatal编程技术网 elasticsearch,searchkick,Ruby On Rails,elasticsearch,Searchkick" /> elasticsearch,searchkick,Ruby On Rails,elasticsearch,Searchkick" />

Ruby on rails 默认情况下,文本字段上禁用Fielddata。设置fielddata=true

Ruby on rails 默认情况下,文本字段上禁用Fielddata。设置fielddata=true,ruby-on-rails,elasticsearch,searchkick,Ruby On Rails,elasticsearch,Searchkick,以下是完整的错误消息: Searchkick::InvalidQueryError:Searchkick::InvalidQueryError: [400] {“错误”:{“根本原因”:[{“类型”:“非法参数”\u异常”,“原因”:“字段数据” 默认情况下,在文本字段上禁用。在 [foo_name]通过取消转换将fielddata加载到内存中 倒排索引。注意,这可以使用 内存“}],“类型”:“搜索\阶段\执行\异常”,“原因”:“全部” 碎片 失败”,“阶段”:“查询”,“分组”:true,

以下是完整的错误消息:

Searchkick::InvalidQueryError:Searchkick::InvalidQueryError: [400] {“错误”:{“根本原因”:[{“类型”:“非法参数”\u异常”,“原因”:“字段数据” 默认情况下,在文本字段上禁用。在 [foo_name]通过取消转换将fielddata加载到内存中 倒排索引。注意,这可以使用 内存“}],“类型”:“搜索\阶段\执行\异常”,“原因”:“全部” 碎片 失败”,“阶段”:“查询”,“分组”:true,“失败的_碎片”:[{“碎片”:0,“索引”:“foos_测试”,“节点”:“k0yyykvniqzaxbvpag_rKgw”,“原因”:{“类型”:“非法参数_异常”,“原因”:“字段数据” 默认情况下,在文本字段上禁用。在 [foo_name]通过取消转换将fielddata加载到内存中 倒排索引。注意,这可以使用 内存“}}],“原因”:{“类型”:“非法参数”\u异常”,“原因”:“字段数据” 默认情况下,在文本字段上禁用。在 [foo_name]通过取消转换将fielddata加载到内存中 倒排索引。注意,这可以使用 内存“}}”,状态:400}

当我在索引操作中添加以下代码时,出现此错误(此错误仅在minitest中显示):

order: {foo_name: :asc}
以下是我的完整索引代码:

def index
  query = params[:q].presence || "*"
  @foos = Foo.search(
    query,
    page: params[:page], per_page: 25,
    order: {foo_name: :asc}
    )
  end
end
我正在使用Searchkick。

试试这个

def index
  query = params[:q].presence || "*"
  @foos = Foo.search(
    query,
    page: params[:page], per_page: 25,
    aggs: {foo_name: {order: {"_term" => "asc"}}}
   )
end

这是一个令人讨厌的问题;我们幸运地偶然找到了解决办法。我假设您的模型如下所示:

class Foo
  attr_accessor :foo_name

  searchkick # some settings

  def search_data
    { foo_name: foo_name }
  end
end
order: {'foo_name.keyword' => 'asc'}
您需要做的是定义一个foo_name_排序字段,该字段的值与foo_name相同,但设置为filterable:

class Foo
  attr_accessor :foo_name

  searchkick # some settings,
             filterable [:foo_name_sort]

  def search_data
    { foo_name: foo_name,
      foo_name_sort: foo_name }
  end
end
然后搜索:

@foos = Foo.search(
  query,
  page: params[:page], per_page: 25,
  order: {foo_name_sort: :asc}
  )

按以下方式书写您的订单:

class Foo
  attr_accessor :foo_name

  searchkick # some settings

  def search_data
    { foo_name: foo_name }
  end
end
order: {'foo_name.keyword' => 'asc'}