【问题标题】:Searchkick::InvalidQueryError 400 error running elasticsearch/searchkick in cloud9?Searchkick::InvalidQueryError 400 在 cloud9 中运行 elasticsearch/searchkick 时出错?
【发布时间】:2020-05-08 00:03:40
【问题描述】:

我使用命令在 cloud9 中运行弹性搜索

./elasticsearch -E http.port=8081

然后我通过运行 curl 检查状态

 curl 127.0.0.1:8081

返回

{
  "name" : "JgfOdbe",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "zELSmBAIStOB1VNaOz1C-Q",
  "version" : {
    "number" : "6.1.1",
    "build_hash" : "bd92e7f",
    "build_date" : "2017-12-17T20:23:25.338Z",
    "build_snapshot" : false,
    "lucene_version" : "7.1.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

现在我创建书架并创建了几本书

在书籍控制器中我创建了一个测试方法

def index
    @books = Book.search("test", fields: [:title])
end

当我调用索引操作时,它会返回错误

Searchkick::InvalidQueryError in BooksController#index

我在错误图片下面粘贴了

我想知道这个错误的原因。看来语法是正确的。我很感激任何帮助!谢谢!

【问题讨论】:

    标签: ruby-on-rails ruby elasticsearch searchkick


    【解决方案1】:

    我认为您需要解决两个问题:

    配置 Elasticsearch 端点

    由于您使用的端口 (8081) 与默认端口 (9200) 不同,因此您应该将 ELASTICSEARCH_URL 环境变量设置为该端口:

    ENV["ELASTICSEARCH_URL"] = "http://localhost:8081"
    

    相关文档在这里:https://github.com/ankane/searchkick#deployment

    导入您的数据

    之后,您需要将模型中的数据重新索引到 Elasticsearch:

    Book.reindex
    

    文档也在这里:https://github.com/ankane/searchkick#getting-started

    【讨论】:

      【解决方案2】:

      必须从类而不是对象中进行重新索引。

      当从对象运行重新索引时,未创建分析器等信息并引发此异常。

      # Works!
      Book.reindex
      
      # Not works :(
      Book.limit(1000).offset(0).each { |book| book.reindex }
      

      查看更多here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-07
        • 2014-12-24
        • 1970-01-01
        • 2015-09-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多