我一直在尝试在我们的应用程序中使用 Elasticsearch,但分页限制为 10k 对我们来说实际上是一个问题,并且由于必须超时问题,滚动 API 也不是推荐的选择。
\n我发现 Elasticsearch 有一个叫做 search_after 的东西,它是支持深度分页的理想解决方案。我一直试图从文档中理解它,但它有点令人困惑,并且无法清楚地理解它是如何工作的。
\n假设我的文档中有三列,id, first_name, last_name其中 ID 是唯一的主键。
{\n "size": 10,\n "query": {\n "match" : {\n "title" : "elasticsearch"\n }\n },\n "sort": [\n {"id": "asc"} \n ]\n}\nRun Code Online (Sandbox Code Playgroud)\n我可以使用上面的查询来使用 search_after 功能吗?我在他们的文档中读到,我们必须在排序中使用多个唯一值,而不仅仅是一个 ( ID),但正如你所知,在我的数据集中,我只有 ID 是唯一的。我可以做什么来将 search_after 用于我的数据集示例?
我无法理解所述问题,如果我使用一个独特的决胜局进行排序?有人可以帮忙用外行人的话解释一下吗?
\nhttps://www.elastic.co/guide/en/elasticsearch/reference/6.8/search-request-search-after.html
\n\n每个文档具有唯一值的字段应用作排序规范的\ntiebreaker。否则,具有相同排序值的文档的排序顺序将是未定义的,并可能导致结果丢失或重复。每个文档的 _id 字段都有唯一的值,但不建议直接将其用作决胜局。请注意,search_after 会查找第一个完全或部分匹配 tiebreaker\xe2\x80\x99s 提供的值的文档。因此,如果某个文档的决胜局值为“654323”,而您在“654”之后搜索,它仍会匹配该文档并返回在该文档之后找到的结果。文档值在此字段上被禁用,因此对其进行排序\n需要在内存中加载大量数据。相反,建议\n在另一个启用了文档值的字段中复制(客户端或使用设置的摄取处理器)\n_id 字段的内容,并使用\n这个新字段作为排序的决胜局。
\n
我有一组分散在多个服务器上的dockerized应用程序,并尝试使用ELK设置生产级集中式日志记录.我对ELK部件本身没问题,但我对如何将日志转发到我的logstashes有点困惑.我正在尝试使用Filebeat,因为它具有loadbalance功能.我还想避免将Filebeat(或其他任何东西)打包到我的所有码头工人中,并保持它分离,对接或不用.
我该怎么办?
我一直在尝试以下方面.我的Docker登录stdout所以配置了非dockerized Filebeat从stdin读取我做:
docker logs -f mycontainer | ./filebeat -e -c filebeat.yml
这似乎在开始时起作用.第一个日志将转发到我的logstash.我想是缓存的.但在某些时候它会卡住并继续发送相同的事件
这只是一个错误还是我朝错误的方向前进?你设置了什么解决方案?
Elasticsearch 本身就是一个数据库吗?使用它作为我的主数据库安全吗?作为我存储敏感数据的主数据库是否安全?
我正在使用 Elastic 7.9.2 版本并希望使用安全性。所以我跑了:
bin/elasticsearch-certutil cert -out config/elastic-certificates.p12 -pass ""
Run Code Online (Sandbox Code Playgroud)
然后添加
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p1
Run Code Online (Sandbox Code Playgroud)
在config/elasticsearch.yaml
现在当我运行 ES 时
bin/elasticsearch
Run Code Online (Sandbox Code Playgroud)
出现以下错误:
"error":{"root_cause":[{"type":"security_exception","reason":"missing authentication credentials
for REST request [/]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-
8\""}}],"type":"security_exception","reason":"missing authentication credentials for REST
request [/]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-
8\""}},"status":401}root@ip-localhost:/var/log/elasticsearch
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮忙吗!
elasticsearch kibana amazon-elastic-beanstalk elastic-stack elasticsearch-x-pack
我想将日志从Java应用程序发送到ElasticSearch,传统方法似乎是在运行应用程序的服务器上设置Logstash,并使用logstash解析日志文件(使用正则表达式...!)并将其加载到ElasticSearch中.
是否有这样做的原因,而不是仅仅设置log4J(或logback)将所需格式的内容直接记录到日志收集器中,然后可以异步运送到ElasticSearch?当应用程序本身可以首先将其记录为所需的格式时,我必须摆弄grok过滤器以处理多行堆栈跟踪(并在日志解析时刻录CPU周期),这似乎很疯狂?
在切向相关的注释中,对于在Docker容器中运行的应用程序,最佳做法是直接登录到ElasticSearch,因为只需要运行一个进程?
我在kibana遇到了问题.它在"发现"选项卡中未显示任何结果.
我们是否有社区使用的任何Kibana替代品?我在互联网上搜索,我只能找到Head elasticSearch插件.如果没有任何作用,那么我将使用.Net和asp.net图表来使用ElasticSearch JSON提要.
Log stash如何与Kafka不同?如果两者相同哪个更好?如何?
我发现两者都是可以推送数据进行进一步处理的管道.
我正在尝试使用Docker 的图像elk-docker(https://elk-docker.readthedocs.io/),使用Docker Compose..yml文件是这样的:
elk:
image: sebp/elk
ports:
- "5601:5601"
- "9200:9200"
- "5044:5044"
Run Code Online (Sandbox Code Playgroud)
当我运行命令:sudo docker-compose up时,控制台显示:
* Starting Elasticsearch Server
sysctl: setting key "vm.max_map_count": Read-only file system
...fail!
waiting for Elasticsearch to be up (1/30)
waiting for Elasticsearch to be up (2/30)
waiting for Elasticsearch to be up (3/30)
waiting for Elasticsearch to be up (4/30)
waiting for Elasticsearch to be up (5/30)
waiting for Elasticsearch to be up (6/30)
waiting for Elasticsearch to be up …Run Code Online (Sandbox Code Playgroud) 从filebeat索引日志时,我在Elasticsearch上面得到了Mapper解析错误.
我尝试了Filebeat - > Elasticserach和Filebeat - > Logstash - > Elasticsearch方法.
我按照他们自己的文档,按照指示安装了filebeat模板,并通过在Elasticsearch中加载索引模板进行验证.Filebeat参考
我的弹性搜索通常与我的其他数据索引工作正常,我在Kibana上测试它们.它是一个官方码头Docker Hub | Elasticsearch安装.
谷歌搜索了很多运气,所以,任何帮助表示赞赏.
更新1:
ES版本:2.3.3(我相信最新版本)
模板文件是filebeat附带的默认文件.
{
"mappings": {
"_default_": {
"_all": {
"norms": false
},
"dynamic_templates": [
{
"fields": {
"mapping": {
"ignore_above": 1024,
"type": "keyword"
},
"match_mapping_type": "string",
"path_match": "fields.*"
}
}
],
"properties": {
"@timestamp": {
"type": "date"
},
"beat": {
"properties": {
"hostname": {
"ignore_above": 1024,
"type": "keyword"
},
"name": {
"ignore_above": 1024,
"type": "keyword"
}
} …Run Code Online (Sandbox Code Playgroud) 我尝试使用logstash-logback-encoderspring boot 将日志发送到 ELK。但不幸的是我收到这个错误。
|-ERROR in net.logstash.logback.appender.LogstashTcpSocketAppender[LOGSTASH] - Unable to process event: 'java.time.Instant ch.qos.logback.classic.spi.ILoggingEvent.getInstant()' java.lang.NoSuchMethodError: 'java.time.Instant ch.qos.logback.classic.spi.ILoggingEvent.getInstant()'
at java.lang.NoSuchMethodError: 'java.time.Instant ch.qos.logback.classic.spi.ILoggingEvent.getInstant()'
at at net.logstash.logback.composite.loggingevent.LoggingEventFormattedTimestampJsonProvider.getTimestampAsInstant(LoggingEventFormattedTimestampJsonProvider.java:29)
at at net.logstash.logback.composite.loggingevent.LoggingEventFormattedTimestampJsonProvider.getTimestampAsInstant(LoggingEventFormattedTimestampJsonProvider.java:25)
at at net.logstash.logback.composite.AbstractFormattedTimestampJsonProvider.writeTo(AbstractFormattedTimestampJsonProvider.java:164)
at at net.logstash.logback.composite.JsonProviders.writeTo(JsonProviders.java:78)
at at net.logstash.logback.composite.AbstractCompositeJsonFormatter.writeEventToGenerator(AbstractCompositeJsonFormatter.java:290)
at at net.logstash.logback.composite.AbstractCompositeJsonFormatter$JsonFormatter.writeEvent(AbstractCompositeJsonFormatter.java:190)
at at net.logstash.logback.composite.AbstractCompositeJsonFormatter.writeEvent(AbstractCompositeJsonFormatter.java:156)
at at net.logstash.logback.encoder.CompositeJsonEncoder.encode(CompositeJsonEncoder.java:106)
at at net.logstash.logback.encoder.CompositeJsonEncoder.encode(CompositeJsonEncoder.java:80)
at at net.logstash.logback.encoder.CompositeJsonEncoder.encode(CompositeJsonEncoder.java:36)
at at net.logstash.logback.appender.AbstractLogstashTcpSocketAppender$TcpSendingEventHandler.encode(AbstractLogstashTcpSocketAppender.java:654)
at at net.logstash.logback.appender.AbstractLogstashTcpSocketAppender$TcpSendingEventHandler.writeEvent(AbstractLogstashTcpSocketAppender.java:616)
at at net.logstash.logback.appender.AbstractLogstashTcpSocketAppender$TcpSendingEventHandler.onEvent(AbstractLogstashTcpSocketAppender.java:580)
at at net.logstash.logback.appender.AbstractLogstashTcpSocketAppender$TcpSendingEventHandler.onEvent(AbstractLogstashTcpSocketAppender.java:291)
at at net.logstash.logback.appender.AsyncDisruptorAppender$EventClearingEventHandler.onEvent(AsyncDisruptorAppender.java:363)
at at net.logstash.logback.appender.AsyncDisruptorAppender$EventClearingEventHandler.onEvent(AsyncDisruptorAppender.java:350)
at at net.logstash.logback.encoder.com.lmax.disruptor.BatchEventProcessor.processEvents(BatchEventProcessor.java:168)
Run Code Online (Sandbox Code Playgroud)
的版本logstash-logback-encoder是7.4.
|-ERROR …Run Code Online (Sandbox Code Playgroud) spring-boot logstash-logback-encoder elastic-stack spring-logback
elastic-stack ×10
logstash ×3
docker ×2
kibana ×2
apache-kafka ×1
devops ×1
filebeat ×1
java ×1
javascript ×1
logging ×1
nest ×1
spring-boot ×1