elastic-app-search 7.4.0 → 7.4.1

Sign up to get free protection for your applications and to get access to all the features.
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