elastic-app-search 7.4.0 → 7.4.1

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: 23ca08f1c2392f7be42177b5b3d8574b41949eaacffa31699d2b46b482a84021
4
- data.tar.gz: 267e8bac44dfd815e42a9d6e6971de0b342feb1a2982887028adfebd83faf0d3
3
+ metadata.gz: 6ad2aa4de4232586f616793b6f55332dde5d122fbe79ac5f80c62c42fa93bb07
4
+ data.tar.gz: 5413783fa304ac1c71b317f982a20d4d2d35b2eb6782721df285dd9ce58eadb0
5
5
  SHA512:
6
- metadata.gz: '0019c22322850583ed5f3e1062365998511e31200a7fe938eb7a3a63ff2a35540977541f666a8144d8cd9ed5cff91307d7f2bb90224859610a94ea99cd5f1ef2'
7
- data.tar.gz: 4b22ee129457885c0084d5e6bb931fb78e37b8e0f15f697e650e7804aa075eead085ef7f36729d26634d2f7419f9d4e2a7939592970d0e48d939a83745e2775a
6
+ metadata.gz: 4896a9fb557f51ad81e44af96114d38463743781c777e93ff4b07d770b8cd941f48cb3cb5e7005a4282ea92d7859e8286bd1572152a10539bd50e63b07593b94
7
+ data.tar.gz: b235d0390fcb69242ad2dc23e400d042ea33278cdcb8038b06b4c9f32b8aec7cc9ccbd6117aaa06301f7858a88696c020aa8fc1710f2237da493f64de1768f33
data/README.md CHANGED
@@ -25,7 +25,7 @@ To install the gem, execute:
25
25
  gem install elastic-app-search
26
26
  ```
27
27
 
28
- Or place `gem 'elastic-app-search', '~> 7.4.0'` in your `Gemfile` and run `bundle install`.
28
+ Or place `gem 'elastic-app-search', '~> 7.4.1'` in your `Gemfile` and run `bundle install`.
29
29
 
30
30
  ## Versioning
31
31
 
@@ -192,7 +192,6 @@ client.search(engine_name, query, options)
192
192
 
193
193
  ```ruby
194
194
  engine_name = 'favorite-videos'
195
-
196
195
  queries = [{
197
196
  :query => 'cat',
198
197
  :options => { :search_fields => { :title => {} }}
@@ -208,7 +207,6 @@ client.multi_search(engine_name, queries)
208
207
 
209
208
  ```ruby
210
209
  engine_name = 'favorite-videos'
211
-
212
210
  options = {
213
211
  :size => 3,
214
212
  :types => {
@@ -233,30 +231,29 @@ client.show_settings(engine_name)
233
231
 
234
232
  ```ruby
235
233
  engine_name = 'favorite-videos'
236
-
237
234
  settings = {
238
- "search_fields" => {
239
- "id" => {
240
- "weight" => 1
235
+ 'search_fields' => {
236
+ 'id' => {
237
+ 'weight' => 1
241
238
  },
242
- "url" => {
243
- "weight" => 1
239
+ 'url' => {
240
+ 'weight' => 1
244
241
  },
245
- "title" => {
246
- "weight" => 1
242
+ 'title' => {
243
+ 'weight' => 1
247
244
  },
248
- "body" => {
249
- "weight" => 1
245
+ 'body' => {
246
+ 'weight' => 1
250
247
  },
251
248
  },
252
- "boosts" => {
253
- "title" => [
249
+ 'boosts' => {
250
+ 'title' => [
254
251
  {
255
- "type" => "value",
256
- "factor" => 9.5,
257
- "operation" => "multiply",
258
- "value" => [
259
- "Titanic"
252
+ 'type' => 'value',
253
+ 'factor' => 9.5,
254
+ 'operation' => 'multiply',
255
+ 'value' => [
256
+ 'Titanic'
260
257
  ]
261
258
  }
262
259
  ]
@@ -292,10 +289,279 @@ client = Elastic::AppSearch::Client.new(host_identifier: 'host-c5s2mj', api_key:
292
289
  client.search('national-parks-demo', 'everglade')
293
290
  ```
294
291
 
292
+ #### Log click-through
293
+
294
+ Logging a click through
295
+
296
+ ```ruby
297
+ engine_name = 'favorite-videos'
298
+ options = {
299
+ :query => 'cat videos',
300
+ :document_id => 'INscMGmhmX4',
301
+ :request_id => 'e4c4dea0bd7ad3d2f676575ef16dc7d2',
302
+ :tags => ['firefox', 'web browser']
303
+ }
304
+
305
+ client.log_click_through(engine_name, options)
306
+ ```
307
+
308
+ #### Analytics - Number of clicks-throughs received by a document
309
+
310
+ ```ruby
311
+ engine_name = 'favorite-videos'
312
+ options = {
313
+ :query => 'cats',
314
+ :page => {
315
+ :size => 20,
316
+ },
317
+ :filters => {
318
+ :date => {
319
+ :from => '2019-04-11T00:00:00+00:00',
320
+ :to => '2019-04-13T00:00:00+00:00'
321
+ }
322
+ }
323
+ }
324
+
325
+ client.get_top_clicks_analytics(engine_name, options)
326
+ ```
327
+
328
+ #### Analytics - Queries, number of queries, and clicks received
329
+
330
+ ```ruby
331
+ engine_name = 'favorite-videos'
332
+ options = {
333
+ :page => {
334
+ :size => 20
335
+ },
336
+ :filters => {
337
+ :date => {
338
+ :from => '2019-04-11T00:00:00+00:00',
339
+ :to => '2019-04-13T00:00:00+00:00'
340
+ }
341
+ }
342
+ }
343
+
344
+ client.get_top_queries_analytics(engine_name, options)
345
+ ```
346
+
347
+ #### Analytics - Number of clicks and total number of queries
348
+
349
+ ```ruby
350
+ engine_name = 'favorite-videos'
351
+ options = {
352
+ :filters => {
353
+ :all => [
354
+ {
355
+ :tag => ['mobile', 'web']
356
+ },{
357
+ :query => 'cats'
358
+ }, {
359
+ :document_id => '163'
360
+ }, {
361
+ :date => {
362
+ :from => '2018-07-05T12:00:00+00:00',
363
+ :to => '2018-07-05T14:00:00+00:00'
364
+ }
365
+ }
366
+ ]
367
+ },
368
+ :interval => 'hour'
369
+ }
370
+
371
+ client.get_count_analytics(engine_name, options)
372
+ ```
373
+
374
+ #### Creating Synonym Sets
375
+
376
+ ```ruby
377
+ engine_name = 'us-national-parks'
378
+
379
+ client.create_synonym_set(engine_name, :synonyms => ['park', 'trail'])
380
+ ```
381
+
382
+ #### Retrieving Synonym Sets
383
+
384
+ ```ruby
385
+ engine_name = 'us-national-parks'
386
+
387
+ client.get_synonym_set(engine_name, 'syn-5d8e6b5d40caae7dcb6e1b9c')
388
+ ```
389
+
390
+ #### Listing Synonym Sets
391
+
392
+ ```ruby
393
+ engine_name = 'us-national-parks'
394
+
395
+ client.list_synonym_sets(engine_name, :current => 1, :size => 20)
396
+ ```
397
+
398
+ #### Updating Synonym Sets
399
+
400
+ ```ruby
401
+ engine_name = 'us-national-parks'
402
+
403
+ client.update_synonym_set(engine_name, 'syn-5d8e6b5d40caae7dcb6e1b9c', :synonyms => ['park', 'trail', 'ground'])
404
+ ```
405
+
406
+ #### Destroying Synonym Sets
407
+
408
+ ```ruby
409
+ engine_name = 'us-national-parks'
410
+
411
+ client.destroy_synonym_set(engine_name, 'syn-5d8e6b5d40caae7dcb6e1b9c')
412
+ ```
413
+
414
+ #### Listing Credentials
415
+
416
+ ```ruby
417
+ client.list_credentials(:current => 1, :size => 20)
418
+ ```
419
+
420
+ #### Retrieving Credentials
421
+
422
+ ```ruby
423
+ client.get_credential('reading-private-key')
424
+ ```
425
+
426
+ #### Creating Credentials
427
+
428
+ ```ruby
429
+ client.create_credential({
430
+ :name => 'reading-private-key',
431
+ :type => 'private',
432
+ :read => true,
433
+ :write => false,
434
+ :access_all_engines => false,
435
+ :engines => [
436
+ 'favorite-videos'
437
+ ]
438
+ })
439
+ ```
440
+
441
+ #### Updating Credentials
442
+
443
+ ```ruby
444
+ client.update_credential('reading-private-key', {
445
+ :name => 'reading-private-key',
446
+ :type => 'private',
447
+ :read => true,
448
+ :write => true,
449
+ :access_all_engines => false,
450
+ :engines => [
451
+ 'favorite-videos'
452
+ ]
453
+ })
454
+ ```
455
+
456
+ #### Destroying Credentials
457
+
458
+ ```ruby
459
+ client.destroy_credential('reading-private-key')
460
+ ```
461
+
462
+ #### Retrieving an Engine's Schema
463
+
464
+ ```ruby
465
+ engine_name = 'us-national-parks'
466
+
467
+ client.get_schema(engine_name)
468
+ ```
469
+
470
+ #### Updating an Engine's Schema or Creating a New Schema Field
471
+
472
+ ```ruby
473
+ engine_name = 'us-national-parks'
474
+
475
+ client.update_schema(engine_name, 'square_km' => 'number')
476
+ ```
477
+
478
+ #### Creating Curations
479
+
480
+ ```ruby
481
+ engine_name = 'us-national-parks'
482
+ options = {
483
+ 'queries' => [
484
+ 'zion'
485
+ ],
486
+ 'promoted' => [
487
+ 'doc-5d8e413b40caaedab76e3c96'
488
+ ],
489
+ 'hidden' => [
490
+ 'doc-5d8e413d40caae335e06c374'
491
+ ]
492
+ }
493
+
494
+ client.create_curation(engine_name, options)
495
+ ```
496
+
497
+ #### Retrieving Curations
498
+
499
+ ```ruby
500
+ engine_name = 'us-national-parks'
501
+
502
+ client.get_curation(engine_name, 'cur-5d9240d640caaeca6506b600')
503
+ ```
504
+
505
+ #### Listing Curations
506
+
507
+ ```ruby
508
+ engine_name = 'us-national-parks'
509
+
510
+ client.list_curations(engine_name, current: 1, size: 20)
511
+ ```
512
+
513
+ #### Updating Curations
514
+
515
+ ```ruby
516
+ engine_name = 'us-national-parks'
517
+ id = 'cur-5d9240d640caaeca6506b600'
518
+ options = {
519
+ 'queries' => [
520
+ 'zion'
521
+ ],
522
+ 'promoted' => [
523
+ 'doc-5d8e413b40caaedab76e3c96'
524
+ ]
525
+ }
526
+
527
+ client.update_curation(engine_name, id, options)
528
+ ```
529
+
530
+ #### Destroying Curations
531
+
532
+ ```ruby
533
+ engine_name = 'us-national-parks'
534
+
535
+ client.destroy_curation(engine_name, 'cur-5d9240d640caaeca6506b600')
536
+ ```
537
+
538
+ #### Retrieving API Logs
539
+
540
+ ```ruby
541
+ engine_name = 'us-national-parks'
542
+ options = {
543
+ 'filters' => {
544
+ 'date' => {
545
+ 'from' => '2019-09-23T00:00:00+00:00',
546
+ 'to' => '2019-09-28T00:00:00+00:00'
547
+ }
548
+ },
549
+ 'page' => {
550
+ 'total_results' => 100,
551
+ 'size' => 20
552
+ },
553
+ 'query' => 'search',
554
+ 'sort_direction' => 'desc'
555
+ }
556
+
557
+ client.get_api_logs(engine_name, options)
558
+ ```
559
+
295
560
  ## Running Tests
296
561
 
297
562
  ```bash
298
563
  export AS_API_KEY="[API_KEY]"
564
+ export AS_ADMIN_KEY="[ADMIN_API_KEY]"
299
565
  export AS_HOST_IDENTIFIER="[HOST_IDENTIFIER]"
300
566
  bundle exec rspec
301
567
  ```
@@ -304,6 +570,7 @@ You can also run tests against a local environment by passing a `AS_API_ENDPOINT
304
570
 
305
571
  ```bash
306
572
  export AS_API_KEY="[API_KEY]"
573
+ export AS_ADMIN_KEY="[ADMIN_API_KEY]"
307
574
  export AS_API_ENDPOINT="http://[HOST_IDENTIFIER].api.127.0.0.1.ip.es.io:3002/api/as/v1"
308
575
  bundle exec rspec
309
576
  ```
@@ -7,11 +7,18 @@ module Elastic
7
7
  module AppSearch
8
8
  # API client for the {Elastic App Search API}[https://www.elastic.co/cloud/app-search-service].
9
9
  class Client
10
+ autoload :Analytics, 'elastic/app-search/client/analytics'
11
+ autoload :Click, 'elastic/app-search/client/click'
12
+ autoload :Credentials, 'elastic/app-search/client/credentials'
13
+ autoload :Curations, 'elastic/app-search/client/curations'
10
14
  autoload :Documents, 'elastic/app-search/client/documents'
11
15
  autoload :Engines, 'elastic/app-search/client/engines'
16
+ autoload :Logs, 'elastic/app-search/client/logs'
17
+ autoload :Schema, 'elastic/app-search/client/schema'
12
18
  autoload :Search, 'elastic/app-search/client/search'
13
- autoload :QuerySuggestion, 'elastic/app-search/client/query_suggestion'
14
19
  autoload :SearchSettings, 'elastic/app-search/client/search_settings'
20
+ autoload :Synonyms, 'elastic/app-search/client/synonyms'
21
+ autoload :QuerySuggestion, 'elastic/app-search/client/query_suggestion'
15
22
 
16
23
  DEFAULT_TIMEOUT = 15
17
24
 
@@ -56,12 +63,19 @@ module Elastic
56
63
  end
57
64
  end
58
65
 
66
+ include Elastic::AppSearch::Client::Analytics
67
+ include Elastic::AppSearch::Client::Click
68
+ include Elastic::AppSearch::Client::Credentials
69
+ include Elastic::AppSearch::Client::Curations
59
70
  include Elastic::AppSearch::Client::Documents
60
71
  include Elastic::AppSearch::Client::Engines
72
+ include Elastic::AppSearch::Client::Logs
73
+ include Elastic::AppSearch::Client::Schema
61
74
  include Elastic::AppSearch::Client::Search
75
+ include Elastic::AppSearch::Client::SearchSettings
62
76
  include Elastic::AppSearch::Client::SignedSearchOptions
77
+ include Elastic::AppSearch::Client::Synonyms
63
78
  include Elastic::AppSearch::Client::QuerySuggestion
64
- include Elastic::AppSearch::Client::SearchSettings
65
79
  end
66
80
  end
67
81
  end
@@ -0,0 +1,25 @@
1
+ # Analytics API - https://swiftype.com/documentation/app-search/api/analytics
2
+ module Elastic
3
+ module AppSearch
4
+ class Client
5
+ module Analytics
6
+
7
+ # Returns the number of clicks received by a document in descending order.
8
+ def get_top_clicks_analytics(engine_name, options)
9
+ post("engines/#{engine_name}/analytics/clicks", options)
10
+ end
11
+
12
+ # Returns queries analytics by usage count
13
+ def get_top_queries_analytics(engine_name, options)
14
+ post("engines/#{engine_name}/analytics/queries", options)
15
+ end
16
+
17
+ # Returns the number of clicks and total number of queries over a period.
18
+ def get_count_analytics(engine_name, options)
19
+ post("engines/#{engine_name}/analytics/counts", options)
20
+ end
21
+
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,15 @@
1
+ # Click API - https://swiftype.com/documentation/app-search/api/clickthrough
2
+ module Elastic
3
+ module AppSearch
4
+ class Client
5
+ module Click
6
+
7
+ # Send data about clicked results.
8
+ def log_click_through(engine_name, options)
9
+ post("engines/#{engine_name}/documents", options)
10
+ end
11
+
12
+ end
13
+ end
14
+ end
15
+ end