- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个使用 Elasticsearch 和 searchkick 运行良好的 Rails 4 应用程序。我通过设置 geo_point 进行了地理搜索,它在开发中运行良好,但在部署相同的代码并验证生产中的索引后,在具有 3GB 的 Digital Ocean 上RAM 和 Ubuntu-16 操作系统,它因错误而失败 -
A Searchkick::InvalidQueryError occurred in home#show_by_location_and_event:
[400] {"error":{"root_cause":[{"type":"query_parsing_exception","reason":"failed to find geo_point field [location]","index":"halls_production_20180520121711247","line":1,"col":724}],"type":"search_phase_execution_exception","reason":"all shards failed","phase":"query","grouped":true,"failed_shards":[{"shard":0,"index":"halls_production_20180520121711247","node":"Mn7tHSKLQWSB1N8Sypb6Qg","reason":{"type":"query_parsing_exception","reason":"failed to find geo_point field [location]","index":"halls_production_20180520121711247","line":1,"col":724}}]},"status":400}
app/controllers/home_controller.rb:168:in `show_by_location_and_event'
home_controller.rb
lat_lng = Geocoder.coordinates(@location)
@event_name = params[:event_name]
###XXXX FAILING HERE AT BELOW LINE
@halls = Hall.get_completed_halls_only.search @location ,
where: {
location: { near: lat_lng,within: "20km"} ,
workflow_state: "accepted",
active: "true"
}
models/hall.rb
##added geo_point
##hall has one address association
searchkick word_start: [:name, :slug, :description, :facebook_link],
word_middle: [:name, :slug, :description, :facebook_link],
text_start: [:name, :slug] , locations: ["location"]
def search_data
{
location: [self.address.latitude, self.address.longitude],
}
end
在用于开发/生产的 Rails 控制台中搜索查询
###=====================query works in development rails console=================
2.2.4 :023 > @halls = Hall.get_completed_halls_only.search "Mumbai" , where: { location: { near: [72.8776559,19.0759837],within: "20km"}}
Hall Search (10.0ms) curl http://localhost:9200/halls_development/_search?pretty -d '{"query":{"bool":{"must":{"dis_max":{"queries":[{"match":{"_all":{"query":"Mumbai","boost":10,"operator":"and","analyzer":"searchkick_search"}}},{"match":{"_all":{"query":"Mumbai","boost":10,"operator":"and","analyzer":"searchkick_search2"}}},{"match":{"_all":{"query":"Mumbai","boost":1,"operator":"and","analyzer":"searchkick_search","fuzziness":1,"prefix_length":0,"max_expansions":3,"fuzzy_transpositions":true}}},{"match":{"_all":{"query":"Mumbai","boost":1,"operator":"and","analyzer":"searchkick_search2","fuzziness":1,"prefix_length":0,"max_expansions":3,"fuzzy_transpositions":true}}}]}},"filter":[{"geo_distance":{"location":[19.0759837,72.8776559],"distance":"20km"}}]}},"size":1000,"from":0,"timeout":"11s","_source":false}'
=> #<Searchkick::Results:0x00000005bed2a0 @klass=Hall(id: integer, name: string, homepage_link: string, description: text, hall_request_id: integer, active: boolean, announcements_count: integer, comments_count: integer, managers_count: integer, pictures_count: integer, videos_count: integer, testimonials_count: integer, created_at: datetime, updated_at: datetime, capacity_in_persons: string, recomendations_count: integer, checkins_count: integer, deleted_at: datetime, additional_details: text, slug: string, food_type: string, facebook_link: string, workflow_state: string, impressions_count: integer, hall_promotions_count: integer, venue_packages_count: integer), @response={"took"=>5, "timed_out"=>false, "_shards"=>{"total"=>5, "successful"=>5, "failed"=>0}, "hits"=>{"total"=>0, "max_score"=>nil, "hits"=>[]}}, @options={:page=>1, :per_page=>1000, :padding=>0, :load=>true, :includes=>nil, :json=>false, :match_suffix=>"analyzed", :highlighted_fields=>[], :misspellings=>true}>
##====================same above query do not work in production rails console - as a part of debugging that i did==========
2.2.4 :066 > @halls = Hall.get_completed_halls_only.search "Mumbai" , where: { location: { near: [72.8776559,19.0759837],within: "20km"}}
Hall Search (297.8ms) curl http://localhost:9200/halls_production/_search?pretty -d '{"query":{"bool":{"must":{"dis_max":{"queries":[{"match":{"_all":{"query":"Mumbai","boost":10,"operator":"and","analyzer":"searchkick_search"}}},{"match":{"_all":{"query":"Mumbai","boost":10,"operator":"and","analyzer":"searchkick_search2"}}},{"match":{"_all":{"query":"Mumbai","boost":1,"operator":"and","analyzer":"searchkick_search","fuzziness":1,"prefix_length":0,"max_expansions":3,"fuzzy_transpositions":true}}},{"match":{"_all":{"query":"Mumbai","boost":1,"operator":"and","analyzer":"searchkick_search2","fuzziness":1,"prefix_length":0,"max_expansions":3,"fuzzy_transpositions":true}}}]}},"filter":[{"geo_distance":{"location":[19.0759837,72.8776559],"distance":"20km"}}]}},"size":1000,"from":0,"timeout":"11s","_source":false}'
Searchkick::InvalidQueryError: [400] {"error":{"root_cause":[{"type":"query_parsing_exception","reason":"failed to find geo_point field [location]","index":"halls_production_20180520121711247","line":1,"col":677}],"type":"search_phase_execution_exception","reason":"all shards failed","phase":"query","grouped":true,"failed_shards":[{"shard":0,"index":"halls_production_20180520121711247","node":"Mn7tHSKLQWSB1N8Sypb6Qg","reason":{"type":"query_parsing_exception","reason":"failed to find geo_point field [location]","index":"halls_production_20180520121711247","line":1,"col":677}}]},"status":400}
from /home/deployer/apps/halls/shared/bundle/ruby/2.2.0/gems/searchkick-2.2.0/lib/searchkick/query.rb:184:in `handle_error'
from /home/deployer/apps/halls/shared/bundle/ruby/2.2.0/gems/searchkick-2.2.0/lib/searchkick/query.rb:85:in `rescue in execute'
from /home/deployer/apps/halls/shared/bundle/ruby/2.2.0/gems/searchkick-2.2.0/lib/searchkick/query.rb:78:in `execute'
from /home/deployer/apps/halls/shared/bundle/ruby/2.2.0/gems/searchkick-2.2.0/lib/searchkick.rb:99:in `search'
from /home/deployer/apps/halls/shared/bundle/ruby/2.2.0/gems/searchkick-2.2.0/lib/searchkick/model.rb:29:in `searchkick_search'
from /home/deployer/apps/halls/shared/bundle/ruby/2.2.0/gems/activerecord-4.2.6/lib/active_record/relation/delegation.rb:70:in `block in search'
from /home/deployer/apps/halls/shared/bundle/ruby/2.2.0/gems/activerecord-4.2.6/lib/active_record/relation.rb:302:in `scoping'
from /home/deployer/apps/halls/shared/bundle/ruby/2.2.0/gems/activerecord-4.2.6/lib/active_record/relation/delegation.rb:70:in `search'
###=====response for elasticsearch on the halls_production index
deployer@Hallpick:~/apps/hallpick/current$ curl 'localhost:9200/halls_production'
{"halls_production_20180527160622250":{"aliases":{"halls_production":{}},"mappings":{"hall":{"_all":{"analyzer":"searchkick_index"},"dynamic_templates":[{"string_template":{"mapping":{"include_in_all":true,"ignore_above":30000,"index":"not_analyzed","type":"string","fields":{"analyzed":{"index":"analyzed","type":"string"}}},"match":"*","match_mapping_type":"string"}}],"properties":{"location":{"type":"geo_point"},"locations":{"type":"geo_point"},"name":{"type":"string","index":"not_analyzed","fields":{"analyzed":{"type":"string","analyzer":"searchkick_index"},"text_start":{"type":"string","analyzer":"searchkick_text_start_index"},"word_middle":{"type":"string","analyzer":"searchkick_word_middle_index"},"word_start":{"type":"string","analyzer":"searchkick_word_start_index"}},"ignore_above":30000},"slug":{"type":"string","index":"not_analyzed","fields":{"analyzed":{"type":"string","analyzer":"searchkick_index"},"text_start":{"type":"string","analyzer":"searchkick_text_start_index"},"word_middle":{"type":"string","analyzer":"searchkick_word_middle_index"},"word_start":{"type":"string","analyzer":"searchkick_word_start_index"}},"ignore_above":30000}}},"_default_":{"_all":{"analyzer":"searchkick_index"},"dynamic_templates":[{"string_template":{"mapping":{"include_in_all":true,"ignore_above":30000,"index":"not_analyzed","type":"string","fields":{"analyzed":{"index":"analyzed","type":"string"}}},"match":"*","match_mapping_type":"string"}}],"properties":{"location":{"type":"geo_point"},"name":{"type":"string","index":"not_analyzed","fields":{"analyzed":{"type":"string","analyzer":"searchkick_index"},"text_start":{"type":"string","analyzer":"searchkick_text_start_index"},"word_middle":{"type":"string","analyzer":"searchkick_word_middle_index"},"word_start":{"type":"string","analyzer":"searchkick_word_start_index"}},"ignore_above":30000},"slug":{"type":"string","index":"not_analyzed","fields":{"analyzed":{"type":"string","analyzer":"searchkick_index"},"text_start":{"type":"string","analyzer":"searchkick_text_start_index"},"word_middle":{"type":"string","analyzer":"searchkick_word_middle_index"},"word_start":{"type":"string","analyzer":"searchkick_word_start_index"}},"ignore_above":30000}}}},"settings":{"index":{"creation_date":"1527437182297","analysis":{"filter":{"searchkick_suggest_shingle":{"max_shingle_size":"5","type":"shingle"},"searchkick_edge_ngram":{"type":"edgeNGram","min_gram":"1","max_gram":"50"},"searchkick_index_shingle":{"token_separator":"","type":"shingle"},"searchkick_search_shingle":{"token_separator":"","output_unigrams_if_no_shingles":"true","output_unigrams":"false","type":"shingle"},"searchkick_stemm r":{"type":"snowball","language":"English"},"searchkick_ngram":{"type":"nGram","min_gram":"1","max_gram":"50"}},"analyzer":{"searchkick_word_start_index":{"filter":["lowercase","asciifolding","searchkick_edge_ngram"],"type":"custom","tokenizer":"standard"},"searchkick_keyword":{"filter":["lowercase","searchkick_stemmer"],"type":"custom","tokenizer":"keyword"},"searchkick_text_end_index":{"filter":["lowercase","asciifolding","reverse","searchkick_edge_ngram","reverse"],"type":"custom","tokenizer":"keyword"},"searchkick_search2":{"filter":["standard","lowercase","asciifolding","searchkick_stemmer"],"char_filter":["ampersand"],"type":"custom","tokenizer":"standard"},"searchkick_word_middle_index":{"filter":["lowercase","asciifolding","searchkick_ngram"],"type":"custom","tokenizer":"standard"},"searchkick_search":{"filter":["standard","lowercase","asciifolding","searchkick_search_shingle","searchkick_stemmer"],"char_filter":["ampersand"],"type":"custom","tokenizer":"standard"},"searchkick_text_start_index":{"filter":["lowercase","asciifolding","searchkick_edge_ngram"],"type":"custom","tokenizer":"keyword"},"searchkick_word_end_index":{"filter":["lowercase","asciifolding","reverse","searchkick_edge_ngram","reverse"],"type":"custom","tokenizer":"standard"},"searchkick_word_search":{"filter":["lowercase","asciifolding"],"type":"custom","tokenizer":"standard"},"searchkick_autocomplete_search":{"filter":["lowercase","asciifolding"],"type":"custom","tokenizer":"keyword"},"searchkick_suggest_index":{"filter":["lowercase","asciifolding","searchkick_suggest_shingle"],"type":"custom","tokenizer":"standard"},"searchkick_text_middle_index":{"filter":["lowercase","asciifolding","searchkick_ngram"],"type":"custom","tokenizer":"keyword"},"searchkick_index":{"filter":["standard","lowercase","asciifolding","searchkick_index_shingle","searchkick_stemmer"],"char_filter":["ampersand"],"type":"custom","tokenizer":"standard"}},"char_filter":{"ampersand":{"type":"mapping","mappings":["&=> and "]}}},"number_of_shards":"5","number_of_replicas":"1","uuid":"gcfBQAZuTpW8YqMVdw2ALg","version":{"created":"2040699"}}},"warmers":{}}}deployer@Hallpick:~/apps/hallpick/current$
是不是因为我的索引是空的,因为生产中没有数据。?我想我已经提供了我所能提供的所有必需的详细信息。仍然想知道问题是什么。
最佳答案
我解决了上述错误,让我分享一下方法。
我认为我的开发和产品上的 Elasticsearch 版本有一些原因。
========on dev==========
Loading development environment (Rails 4.2.6)
2.2.4 :001 > Elasticsearch::Model.client.info
=> {"name"=>"Sunpyre", "cluster_name"=>"elasticsearch", "version"=>{"number"=>"2.3.5", "build_hash"=>"90f433701e64ccd01edbb4", "build_timestamp"=>"2016-07-27T10:36:52Z", "build_snapshot"=>false, "lucene_version"=>"5.5.0"}, "tagline"=>"You Know, for Search"}
2.2.4 :002 >
=======on prod=========
Loading production environment (Rails 4.2.6)
2.2.0 :001 > Elasticsearch::Model.client.info
=> {"name"=>"Production Node", "cluster_name"=>"elasticsearch", "cluster_uuid"=>"NCPUn7V084cpIA", "version"=>{"number"=>"2.4.6", "build_hash"=>"5376dca9f70f3abe0ace8240fd", "build_timestamp"=>"2017-07-18T12:17:44Z", "build_snapshot"=>false, "lucene_version"=>"5.5.4"}, "tagline"=>"You Know, for Search"}
2.2.0 :002 >
所以像下面这样的映射在开发中有效但在生产中无效。
====在开发上工作,但不在产品上工作=====
searchkick word_start: [:name, :slug],
word_middle: [:name, :slug],
text_start: [:name, :slug],
locations: ["location"]
但是当我添加显式映射时,它在产品上工作..也在开发上工作(不用说)
searchkick merge_mappings: true,
mappings: {hall:
{properties:
{
locations:
{
type:"geo_point"
}
}
}
},
locations: ["location"],
word_start: [:name, :slug],
word_middle: [:name, :slug],
text_start: [:name, :slug]
mapping do
indexes :location, type: 'geo_point'
end
我认为所有自定义映射都是 2.4 版本所需的东西,这在 ChangeLog 上是不可见的。
希望这对某人有帮助。
关于ruby-on-rails - Rails4 生产 elasticsearch 错误 - 找不到 geo_point,但在开发中有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50438868/
我正在使用logstash将来自csv的地理空间数据作为geo_points输入到elasticsearch。 CSV如下所示: $ head -5 geo_data.csv "lon","lat",
来自此处的文档:http://www.elasticsearch.org/guide/reference/mapping/geo-point-type.html 它说 geo_point 接受不同的格
您好,我正在尝试在 ElasticSearch 中查询 geo_point,使用查询语法 geo polygon filter 在官方文档中],但是没有返回结果。 这里有一些细节:我用 river p
我正在使用 NEST .net 客户端进行 Elastic Search。我有一个带有 Location 属性的 Address 类。 public class Address { public st
我的 grok 过滤器(工作)的一部分抓取了以下两个字段: %{NUMBER:XCent} %{NUMBER:Ycent} 这是纬度,长点。 我正在尝试添加一个位置引脚,但在我的配置文件中使用 --d
我试图通过索引单个文档来遵循文档中的示例: curl -XPUT 'localhost:9200/graph/nodes/1' -d' { "pin" : { "
我正在尝试更新我的Elasticsearch索引中geo_point字段的映射,但是遇到了问题。我在Kibana中使用开发工具控制台。 geo_point的数据采用双数组格式。我正在将spark与el
我想将一些 JSON 持久化到 elastic(search),看起来有点像这样: { "name": "value", "points": [ { "lat": 0.0, "lon"
我正在尝试针对嵌套在对象 (Location) 中的 geo_point (geo_coordinates) 进行过滤,该对象嵌套在查询对象 (MyObject) 的数组中。 问题是对象 MyObje
我们在模型中有两个单独的纬度和经度字段。我们如何创建映射以在 ElasticSearch 中从中创建 geo_point 类型? 最佳答案 您需要创建一个类型为 geo_point 的新字段 映射 {
尝试按如下方式构建搜索: { "query": { "filtered": { "query": { "match_all": {} },
我想使用 Grafana 世界地图来显示(聚合)点,这些点以 geo_point 字段类型存储在 elasticsearch 中。但它失败了。 Grafana 报告“错误:缺少 geohash 值”
我遇到了一个与 elasticsearch 相关的问题 geo_point 从数据库导入时。 如果 的值,我的映射效果很好龙 或 纬度 字段包含实际值。 现在可能发生某些行包含 空值 为 经纬度如果我
我有一些具有以下格式的日志(我将 IP 从公共(public)更改为私有(private),但你明白了): 192.168.0.1 [20/Nov/2019:16:09:28 +0000] GET /
我有一个用于使用elasticsearch geopoint 的Spring Boot 应用程序。当我保存弹性索引并创建 geoDistanceQuery 时,我收到 QueryShardExcept
我指的是这个 Geo Distance Query Elasticsearch 文档中给出的示例。 版本:5.3 按照教程,我执行了这个查询以在索引中插入数据 PUT /my_locations/lo
我正在尝试将 mysql 数据(动态更改)与 elasticsearch 同步。我使用 logstash 进行同步。我需要过滤 1KM 半径内的车辆列表以获取通过的 geo_points。在 elas
我可以在我的默认映射中看到 geoip.location 映射到 geo_point 类型: GET myserver:9200/_template { "logstash": {
我有一个具有以下映射的索引: { "mappings":{ "my_stuff_type":{ "properties":{ "location": {
这是我们的文档: { "geometry" : { "type" : "Point", "coordinates" : [ -87.662682, 41.843
我是一名优秀的程序员,十分优秀!