logstash-filter-elasticsearch 3.5.0 → 3.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: d8d5c99d58129ffad85468e4bab7c64f184a0bdc2aa8b8a11c8f52353c8e4876
         | 
| 4 | 
            +
              data.tar.gz: 30b1a189484e118138d6f7607be7319e035696464e8682b59122f830063b0c8d
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 6ef80c1576cf3d84f3da23bc23ecf7931812675d3566d46a074f6c8901dc182a34a67da8c17f7a6beafd33407c81d4a392c8d604b54abbaad3e542dd2260b987
         | 
| 7 | 
            +
              data.tar.gz: 7b754511d4a252de292646d67929b067d4fc44d7eabad53fb300098320592292fc0afac1d200737e6203fe7bd7422a9a1ea7b43e028d1d194879adb7a39788fb
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    
| @@ -94,7 +94,7 @@ class LogStash::Filters::Elasticsearch < LogStash::Filters::Base | |
| 94 94 | 
             
                  results = get_client.search(params)
         | 
| 95 95 | 
             
                  raise "Elasticsearch query error: #{results["_shards"]["failures"]}" if results["_shards"].include? "failures"
         | 
| 96 96 |  | 
| 97 | 
            -
                  event.set("[@metadata][total_hits]", results['hits'] | 
| 97 | 
            +
                  event.set("[@metadata][total_hits]", extract_total_from_hits(results['hits']))
         | 
| 98 98 |  | 
| 99 99 | 
             
                  resultsHits = results["hits"]["hits"]
         | 
| 100 100 | 
             
                  if !resultsHits.nil? && !resultsHits.empty?
         | 
| @@ -173,6 +173,21 @@ class LogStash::Filters::Elasticsearch < LogStash::Filters::Base | |
| 173 173 | 
             
                end
         | 
| 174 174 | 
             
              end
         | 
| 175 175 |  | 
| 176 | 
            +
              # Given a "hits" object from an Elasticsearch response, return the total number of hits in
         | 
| 177 | 
            +
              # the result set.
         | 
| 178 | 
            +
              # @param hits [Hash{String=>Object}]
         | 
| 179 | 
            +
              # @return [Integer]
         | 
| 180 | 
            +
              def extract_total_from_hits(hits)
         | 
| 181 | 
            +
                total = hits['total']
         | 
| 182 | 
            +
             | 
| 183 | 
            +
                # Elasticsearch 7.x produces an object containing `value` and `relation` in order
         | 
| 184 | 
            +
                # to enable unambiguous reporting when the total is only a lower bound; if we get
         | 
| 185 | 
            +
                # an object back, return its `value`.
         | 
| 186 | 
            +
                return total['value'] if total.kind_of?(Hash)
         | 
| 187 | 
            +
             | 
| 188 | 
            +
                total
         | 
| 189 | 
            +
              end
         | 
| 190 | 
            +
             | 
| 176 191 | 
             
              def test_connection!
         | 
| 177 192 | 
             
                get_client.client.ping
         | 
| 178 193 | 
             
              end
         | 
| @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            Gem::Specification.new do |s|
         | 
| 2 2 |  | 
| 3 3 | 
             
              s.name            = 'logstash-filter-elasticsearch'
         | 
| 4 | 
            -
              s.version         = '3. | 
| 4 | 
            +
              s.version         = '3.6.0'
         | 
| 5 5 | 
             
              s.licenses        = ['Apache License (2.0)']
         | 
| 6 6 | 
             
              s.summary         = "Copies fields from previous log events in Elasticsearch to current events "
         | 
| 7 7 | 
             
              s.description     = "This gem is a Logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/logstash-plugin install gemname. This gem is not a stand-alone program"
         | 
| @@ -113,6 +113,26 @@ describe LogStash::Filters::Elasticsearch do | |
| 113 113 | 
             
                  end
         | 
| 114 114 | 
             
                end
         | 
| 115 115 |  | 
| 116 | 
            +
                context 'when Elasticsearch 7.x gives us a totals object instead of an integer' do
         | 
| 117 | 
            +
                  let(:config) do
         | 
| 118 | 
            +
                    {
         | 
| 119 | 
            +
                        "hosts" => ["localhost:9200"],
         | 
| 120 | 
            +
                        "query" => "response: 404",
         | 
| 121 | 
            +
                        "fields" => { "response" => "code" },
         | 
| 122 | 
            +
                        "result_size" => 10
         | 
| 123 | 
            +
                    }
         | 
| 124 | 
            +
                  end
         | 
| 125 | 
            +
             | 
| 126 | 
            +
                  let(:response) do
         | 
| 127 | 
            +
                    LogStash::Json.load(File.read(File.join(File.dirname(__FILE__), "fixtures", "elasticsearch_7.x_hits_total_as_object.json")))
         | 
| 128 | 
            +
                  end
         | 
| 129 | 
            +
             | 
| 130 | 
            +
                  it "should enhance the current event with new data" do
         | 
| 131 | 
            +
                    plugin.filter(event)
         | 
| 132 | 
            +
                    expect(event.get("[@metadata][total_hits]")).to eq(13476)
         | 
| 133 | 
            +
                  end
         | 
| 134 | 
            +
                end
         | 
| 135 | 
            +
             | 
| 116 136 | 
             
                context "if something wrong happen during connection" do
         | 
| 117 137 |  | 
| 118 138 | 
             
                  before(:each) do
         | 
| @@ -0,0 +1,70 @@ | |
| 1 | 
            +
            {
         | 
| 2 | 
            +
              "took": 49,
         | 
| 3 | 
            +
              "timed_out": false,
         | 
| 4 | 
            +
              "_shards": {
         | 
| 5 | 
            +
                "total": 155,
         | 
| 6 | 
            +
                "successful": 155,
         | 
| 7 | 
            +
                "failed": 0
         | 
| 8 | 
            +
              },
         | 
| 9 | 
            +
              "hits": {
         | 
| 10 | 
            +
                "total": {
         | 
| 11 | 
            +
                  "value": 13476,
         | 
| 12 | 
            +
                  "relation": "eq"
         | 
| 13 | 
            +
                },
         | 
| 14 | 
            +
                "max_score": 1,
         | 
| 15 | 
            +
                "hits": [{
         | 
| 16 | 
            +
                  "_index": "logstash-2014.08.26",
         | 
| 17 | 
            +
                  "_type": "logs",
         | 
| 18 | 
            +
                  "_id": "AVVY76L_AW7v0kX8KXo4",
         | 
| 19 | 
            +
                  "_score": 1,
         | 
| 20 | 
            +
                  "_source": {
         | 
| 21 | 
            +
                    "request": "/doc/index.html?org/elasticsearch/action/search/SearchResponse.html",
         | 
| 22 | 
            +
                    "agent": "\"Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)\"",
         | 
| 23 | 
            +
                    "geoip": {
         | 
| 24 | 
            +
                      "timezone": "America/Los_Angeles",
         | 
| 25 | 
            +
                      "ip": "66.249.73.185",
         | 
| 26 | 
            +
                      "latitude": 37.386,
         | 
| 27 | 
            +
                      "continent_code": "NA",
         | 
| 28 | 
            +
                      "city_name": "Mountain View",
         | 
| 29 | 
            +
                      "country_code2": "US",
         | 
| 30 | 
            +
                      "country_name": "United States",
         | 
| 31 | 
            +
                      "dma_code": 807,
         | 
| 32 | 
            +
                      "country_code3": "US",
         | 
| 33 | 
            +
                      "region_name": "California",
         | 
| 34 | 
            +
                      "location": [-122.0838,
         | 
| 35 | 
            +
                        37.386
         | 
| 36 | 
            +
                      ],
         | 
| 37 | 
            +
                      "postal_code": "94035",
         | 
| 38 | 
            +
                      "longitude": -122.0838,
         | 
| 39 | 
            +
                      "region_code": "CA"
         | 
| 40 | 
            +
                    },
         | 
| 41 | 
            +
                    "auth": "-",
         | 
| 42 | 
            +
                    "ident": "-",
         | 
| 43 | 
            +
                    "verb": "GET",
         | 
| 44 | 
            +
                    "useragent": {
         | 
| 45 | 
            +
                      "os": "Other",
         | 
| 46 | 
            +
                      "major": "2",
         | 
| 47 | 
            +
                      "minor": "1",
         | 
| 48 | 
            +
                      "name": "Googlebot",
         | 
| 49 | 
            +
                      "os_name": "Other",
         | 
| 50 | 
            +
                      "device": "Spider"
         | 
| 51 | 
            +
                    },
         | 
| 52 | 
            +
                    "message": "66.249.73.185 - - [26/Aug/2014:21:22:13 +0000] \"GET /doc/index.html?org/elasticsearch/action/search/SearchResponse.html HTTP/1.1\" 404 294 \"-\" \"Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)\"",
         | 
| 53 | 
            +
                    "referrer": "\"-\"",
         | 
| 54 | 
            +
                    "@timestamp": "2014-08-26T21:22:13.000Z",
         | 
| 55 | 
            +
                    "response": 404,
         | 
| 56 | 
            +
                    "bytes": 294,
         | 
| 57 | 
            +
                    "clientip": "66.249.73.185",
         | 
| 58 | 
            +
                    "@version": "1",
         | 
| 59 | 
            +
                    "host": "skywalker",
         | 
| 60 | 
            +
                    "httpversion": "1.1",
         | 
| 61 | 
            +
                    "timestamp": "26/Aug/2014:21:22:13 +0000"
         | 
| 62 | 
            +
                  }
         | 
| 63 | 
            +
                }]
         | 
| 64 | 
            +
              },
         | 
| 65 | 
            +
              "aggregations": {
         | 
| 66 | 
            +
                "bytes_avg": {
         | 
| 67 | 
            +
                  "value": 294
         | 
| 68 | 
            +
                }
         | 
| 69 | 
            +
              }
         | 
| 70 | 
            +
            }
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: logstash-filter-elasticsearch
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 3. | 
| 4 | 
            +
              version: 3.6.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Elastic
         | 
| 8 8 | 
             
            autorequire:
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2018-11- | 
| 11 | 
            +
            date: 2018-11-30 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -97,6 +97,7 @@ files: | |
| 97 97 | 
             
            - lib/logstash/filters/elasticsearch/client.rb
         | 
| 98 98 | 
             
            - logstash-filter-elasticsearch.gemspec
         | 
| 99 99 | 
             
            - spec/filters/elasticsearch_spec.rb
         | 
| 100 | 
            +
            - spec/filters/fixtures/elasticsearch_7.x_hits_total_as_object.json
         | 
| 100 101 | 
             
            - spec/filters/fixtures/query_template.json
         | 
| 101 102 | 
             
            - spec/filters/fixtures/request_error.json
         | 
| 102 103 | 
             
            - spec/filters/fixtures/request_size0_agg.json
         | 
| @@ -131,6 +132,7 @@ specification_version: 4 | |
| 131 132 | 
             
            summary: Copies fields from previous log events in Elasticsearch to current events
         | 
| 132 133 | 
             
            test_files:
         | 
| 133 134 | 
             
            - spec/filters/elasticsearch_spec.rb
         | 
| 135 | 
            +
            - spec/filters/fixtures/elasticsearch_7.x_hits_total_as_object.json
         | 
| 134 136 | 
             
            - spec/filters/fixtures/query_template.json
         | 
| 135 137 | 
             
            - spec/filters/fixtures/request_error.json
         | 
| 136 138 | 
             
            - spec/filters/fixtures/request_size0_agg.json
         |