我正在尝试在Rails应用程序中使用Elasticsearch设置CircleCI。我认为已配置了映像,但是如何在CI中连接到该映像?
到目前为止,我已经尝试过…
https://github.com/elastic/elasticsearch/issues/23866
错误信息
Elasticsearch::Transport::Transport::Errors::Unauthorized: [401]
圈YAML配置
version: 2
jobs:
build:
working_directory: ~/gathrly-smartforms
docker:
- image: circleci/ruby:2.4.1-node
environment:
RAILS_ENV: continous_integration
PGHOST: 127.0.0.1
PGUSER: rails_test_user
- image: circleci/postgres:9.6.3-alpine
environment:
POSTGRES_USER: rails_test_user
POSTGRES_PASSWORD: ""
POSTGRES_DB: continous_integration
- image: redis:4.0.2
- image: docker.elastic.co/elasticsearch/elasticsearch:5.4.2
steps:
- checkout
- restore_cache:
keys:
- my-application-{{ checksum "Gemfile.lock" }}
- my-application-
- save_cache:
key: rails-demo-{{ checksum "Gemfile.lock" }}
paths:
- vendor/bundle
- run:
name: Setup Bundler and Gems
command: |
gem install bundler
gem update bundler
gem install brakeman
gem install rubocop
gem install rubocop-rspec
gem install scss_lint
gem install eslint-rails
gem install execjs
bundle config without development:test
bundle check --path=vendor/bundle || bundle install --without development test --path=vendor/bundle --jobs 4 --retry 3
- run:
name: Setup Postgres
command: |
sudo apt-get install postgresql-client
- run:
name: Setup Rails Database
command: |
RAILS_ENV=continous_integration bundle exec rake db:drop
RAILS_ENV=continous_integration bundle exec rake db:setup
- run:
name: Run Rspec
command: |
RAILS_ENV=continous_integration bundle exec rspec --format RspecJunitFormatter -o /tmp/test-results/rspec.xml
- store_test_results:
path: /tmp/test-results
elasticsearch初始化器
require 'faraday_middleware/aws_signers_v4'
if Rails.env.production? || Rails.env.staging?
Elasticsearch::Model.client = Elasticsearch::Client.new(url: ENV["AWS_ELASTICSEARCH_HOST"]) do |f|
f.request :aws_signers_v4,
credentials: Aws::Credentials.new(ENV['AWS_ACCESS_KEY'], ENV['AWS_ACCESS_SECRET_KEY']),
service_name: 'es',
region: ENV['AWS_REGION']
f.adapter Faraday.default_adapter
end
else
config = {
host: "http://127.0.0.1:9200",
transport_options: {
request: { timeout: 5 }
}
}
if File.exists?("config/elasticsearch.yml")
config.merge!(YAML.load_file("config/elasticsearch.yml"))
end
Elasticsearch::Model.client = Elasticsearch::Client.new(config)
end
来自Elastic的官方Docker映像预装了x-pack。
https://www.elastic.co/guide/zh-
CN/elasticsearch/reference/5.4/docker.html
这意味着您的Elasticsearch实例在启用安全性的情况下运行,但是您似乎没有向Elasticsearch客户端提供任何安全凭证,因此401
在尝试连接时会出现未授权()错误。
您应该通过添加xpack.security.enabled: false
来关闭ES实例中的安全性
elasticsearch.yml
,或者在请求中提供有效的凭据。
问题内容: 我在elasticsearch中有一个很大的术语查询,所以我得到 我试图通过在elasticsearch.yml中增加它 和通过 但没有任何效果。我的索引名为塑料。 问题答案: 背景 注意: 此答案中给出的建议仅适用于5.5以下的Elasticsearch版本。所描述的方法引用的属性最终在5.5中被删除。 搜索设置 该设置已被删除。为了设置最大数目的布尔子句, 应改为使用。 参考-5.
问题内容: 我正在尝试学习ES的工作原理,但是我无法从IDE中运行它。我想运行2.3.3构建,该构建仍将Maven用作其构建系统,但会不断出错。在我详细下载存储库之后,有人可以告诉我如何在IDEA中执行此操作。配置等 我从github下载存储库,然后将项目导入intellij并使用以下配置: 主类:org.elasticsearch.bootstrap.Elasticsearch Vm选项: 工作
我正在努力学习ES是如何工作的,但是我还不能在IDE上运行它。我想运行2.3.3版本,它仍然使用Maven作为构建系统,但不断出现错误。有人能告诉我,在我下载了存储库的详细信息(如配置等)后,如何在IDEA中做到这一点吗。 我从github下载了存储库,然后将项目导入intellij,并使用了以下配置: 主要课程:org。弹性搜索。独自创立弹性搜索 Vm选项: 工作目录:ES目录 环境变量:ES_
问题内容: 我正在使用Sense(Chrome插件),并且已经成功设置了分析仪,并且可以正常工作。如果我在设置上发出GET(/ media / _settings),则返回以下内容。 我正在尝试通过执行以下操作来更新它: 关闭索引 发出此PUT命令(删除过滤器) 打开索引 但是,当设置恢复时,不会删除过滤器。创建分析器后,是否可以不对其进行更新? 问题答案: 简短答案:不可以。 更长的答案。从ES
问题内容: 通过使用,我们可以向Logstash添加新字段。 但是,在这里,我想知道如何为该特定领域设置分析仪。 例如:,我有一个新的id字段,其字段类似于,但Elasticsearch提供的常规分析器会将其分为和。因此,我无法将术语功能有效地应用于该特定领域并使之有用。 在这里,对于ID字段,我想应用我自己的自定义分析器,该分析器不标记值,而是应用小写过滤器。 如何在logstash中完成此操作
CircleCI Documentation This is the public repository for CircleCI Docs, astatic website generated by Jekyll. If you find anyerrors in our docs or have suggestions, please follow our ContributingGuide