Searchkick::InvalidQueryError 400 错误 运行 elasticsearch/searchkick 在 cloud9 中?
Searchkick::InvalidQueryError 400 error running elasticsearch/searchkick in cloud9?
我运行使用命令
在cloud9中进行弹性搜索
./elasticsearch -E http.port=8081
然后我通过 运行ning curl
检查状态
curl 127.0.0.1:8081
它returns
{
"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
当我调用索引操作时 returns 错误
Searchkick::InvalidQueryError in BooksController#index
我已粘贴到错误图片下方
我想知道这个错误的原因。看起来语法是正确的。感谢您的帮助!谢谢!
我认为您需要解决两个问题:
配置 Elasticsearch 端点
由于您使用的端口 (8081) 与默认端口 (9200) 不同,因此您应该将 ELASTICSEARCH_URL
环境变量设置为该端口:
ENV["ELASTICSEARCH_URL"] = "http://localhost:8081"
相关文档在此处:https://github.com/ankane/searchkick#deployment
正在导入您的数据
之后,您需要通过重新索引将数据从您的模型获取到 Elasticsearch:
Book.reindex
重建索引必须从 class 中创建,而不是从对象中创建。
当重新索引从对象运行时,未创建分析器等一些信息并抛出此异常。
# Works!
Book.reindex
# Not works :(
Book.limit(1000).offset(0).each { |book| book.reindex }
查看更多here.
我运行使用命令
在cloud9中进行弹性搜索./elasticsearch -E http.port=8081
然后我通过 运行ning curl
检查状态 curl 127.0.0.1:8081
它returns
{
"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
当我调用索引操作时 returns 错误
Searchkick::InvalidQueryError in BooksController#index
我已粘贴到错误图片下方
我想知道这个错误的原因。看起来语法是正确的。感谢您的帮助!谢谢!
我认为您需要解决两个问题:
配置 Elasticsearch 端点
由于您使用的端口 (8081) 与默认端口 (9200) 不同,因此您应该将 ELASTICSEARCH_URL
环境变量设置为该端口:
ENV["ELASTICSEARCH_URL"] = "http://localhost:8081"
相关文档在此处:https://github.com/ankane/searchkick#deployment
正在导入您的数据
之后,您需要通过重新索引将数据从您的模型获取到 Elasticsearch:
Book.reindex
重建索引必须从 class 中创建,而不是从对象中创建。
当重新索引从对象运行时,未创建分析器等一些信息并抛出此异常。
# Works!
Book.reindex
# Not works :(
Book.limit(1000).offset(0).each { |book| book.reindex }
查看更多here.