标签: elastic-stack

search_after 在弹性搜索中如何工作?

我一直在尝试在我们的应用程序中使用 Elasticsearch,但分页限制为 10k 对我们来说实际上是一个问题,并且由于必须超时问题,滚动 API 也不是推荐的选择。

\n

我发现 Elasticsearch 有一个叫做 search_after 的东西,它是支持深度分页的理想解决方案。我一直试图从文档中理解它,但它有点令人困惑,并且无法清楚地理解它是如何工作的。

\n

假设我的文档中有三列,id, first_name, last_name其中 ID 是唯一的主键。

\n
{\n    "size": 10,\n    "query": {\n        "match" : {\n            "title" : "elasticsearch"\n        }\n    },\n    "sort": [\n        {"id": "asc"}      \n    ]\n}\n
Run Code Online (Sandbox Code Playgroud)\n

我可以使用上面的查询来使用 search_after 功能吗?我在他们的文档中读到,我们必须在排序中使用多个唯一值,而不仅仅是一个 ( ID),但正如你所知,在我的数据集中,我只有 ID 是唯一的。我可以做什么来将 search_after 用于我的数据集示例?

\n

我无法理解所述问题,如果我使用一个独特的决胜局进行排序?有人可以帮忙用外行人的话解释一下吗?

\n

https://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
\n

elasticsearch elastic-stack

24
推荐指数
1
解决办法
3万
查看次数

Docker应用程序使用Filebeat和Logstash进行日志记录

我有一组分散在多个服务器上的dockerized应用程序,并尝试使用ELK设置生产级集中式日志记录.我对ELK部件本身没问题,但我对如何将日志转发到我的logstashes有点困惑.我正在尝试使用Filebeat,因为它具有loadbalance功能.我还想避免将Filebeat(或其他任何东西)打包到我的所有码头工人中,并保持它分离,对接或不用.

我该怎么办?

我一直在尝试以下方面.我的Docker登录stdout所以配置了非dockerized Filebeat从stdin读取我做:

docker logs -f mycontainer | ./filebeat -e -c filebeat.yml

这似乎在开始时起作用.第一个日志将转发到我的logstash.我想是缓存的.但在某些时候它会卡住并继续发送相同的事件

这只是一个错误还是我朝错误的方向前进?你设置了什么解决方案?

logstash docker logstash-forwarder elastic-stack

22
推荐指数
4
解决办法
2万
查看次数

Elasticsearch 是一个独立的数据库还是可以与 MongoDB 或其他数据库一起使用?

Elasticsearch 本身就是一个数据库吗?使用它作为我的主数据库安全吗?作为我存储敏感数据的主数据库是否安全?

javascript elasticsearch elastic-stack

19
推荐指数
2
解决办法
2万
查看次数

Elastic 中的访问控制 - 缺少 REST 请求的身份验证凭据

我正在使用 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

15
推荐指数
2
解决办法
5万
查看次数

从Java应用程序登录到ELK而无需解析日志

我想将日志从Java应用程序发送到ElasticSearch,传统方法似乎是在运行应用程序的服务器上设置Logstash,并使用logstash解析日志文件(使用正则表达式...!)并将其加载到ElasticSearch中.

是否有这样做的原因,而不是仅仅设置log4J(或logback)将所需格式的内容直接记录到日志收集器中,然后可以异步运送到ElasticSearch?当应用程序本身可以首先将其记录为所需的格式时,我必须摆弄grok过滤器以处理多行堆栈跟踪(并在日志解析时刻录CPU周期),这似乎很疯狂?

在切向相关的注释中,对于在Docker容器中运行的应用程序,最佳做法是直接登录到ElasticSearch,因为只需要运行一个进程?

java logging elasticsearch logstash elastic-stack

14
推荐指数
2
解决办法
9774
查看次数

Kibana替代品

我在kibana遇到了问题.它在"发现"选项卡中未显示任何结果.

查看此处了解更多信息.

我们是否有社区使用的任何Kibana替代品?我在互联网上搜索,我只能找到Head elasticSearch插件.如果没有任何作用,那么我将使用.Net和asp.net图表来使用ElasticSearch JSON提要.

elasticsearch nest kibana elastic-stack

14
推荐指数
1
解决办法
2万
查看次数

Logstash与Kafka的不同之处

Log stash如何与Kafka不同?如果两者相同哪个更好?如何?

我发现两者都是可以推送数据进行进一步处理的管道.

apache-kafka devops elastic-stack

14
推荐指数
3
解决办法
8213
查看次数

Docker - ELK - vm.max_map_count

我正在尝试使用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)

elasticsearch docker docker-compose elastic-stack

14
推荐指数
3
解决办法
2万
查看次数

Elasticsearch:字段[hostname]上没有声明类型[keyword]的处理程序

从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)

elasticsearch logstash elastic-stack filebeat

13
推荐指数
1
解决办法
2万
查看次数

错误无法处理事件:'java.time.Instant ch.qos.logback.classic.spi.ILoggingEvent.getInstant()'

我尝试使用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-encoder7.4.

|-ERROR …
Run Code Online (Sandbox Code Playgroud)

spring-boot logstash-logback-encoder elastic-stack spring-logback

13
推荐指数
1
解决办法
4079
查看次数