Skip to content
This repository was archived by the owner on Sep 1, 2021. It is now read-only.

Commit 8d659d1

Browse files
CorrosiveKidJasonStoltz
authored andcommitted
Add client methods to get, create and reset search settings on app search
1 parent e71e423 commit 8d659d1

File tree

3 files changed

+208
-0
lines changed

3 files changed

+208
-0
lines changed

README.md

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -438,6 +438,91 @@ Creating a search key that will only search over the body field.
438438
{'source_engines': ['source-engine-1', 'source-engine-2'], 'type': 'meta', 'name': 'my-meta-engine'}
439439
```
440440

441+
### Get search settings
442+
443+
```python
444+
>>> client.get_search_settings(engine_name='us-national-parks')
445+
{
446+
"search_fields": {
447+
"name": {
448+
"weight": 1
449+
},
450+
"description": {
451+
"weight": 1
452+
}
453+
},
454+
"result_fields": {
455+
"name": {
456+
"raw": {}
457+
},
458+
"description": {
459+
"raw": {}
460+
}
461+
},
462+
"boosts": {}
463+
}
464+
```
465+
466+
### Update search settings
467+
468+
```python
469+
>>> client.update_search_settings(
470+
engine_name='us-national-parks',
471+
search_settings={
472+
"search_fields": {
473+
"name": {
474+
"weight": 2
475+
"description": {
476+
"weight": 1
477+
}
478+
},
479+
"result_fields": {
480+
"name": {
481+
"raw": {}
482+
},
483+
"description": {
484+
"raw": {}
485+
}
486+
},
487+
"boosts": {}
488+
}
489+
)
490+
{
491+
"search_fields": {
492+
"name": {
493+
"weight": 2
494+
"description": {
495+
"weight": 1
496+
}
497+
},
498+
"result_fields": {
499+
"name": {
500+
"raw": {}
501+
},
502+
"description": {
503+
"raw": {}
504+
}
505+
},
506+
"boosts": {}
507+
}
508+
```
509+
510+
### Reset search settings
511+
512+
```python
513+
>>> client.reset_search_settings(engine_name='us-national-parks')
514+
{
515+
"search_fields": {
516+
"name": {
517+
"weight": 1
518+
"description": {
519+
"weight": 1
520+
}
521+
},
522+
"boosts": {}
523+
}
524+
```
525+
441526
## Running tests
442527

443528
```python

elastic_app_search/client.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,34 @@ def delete_meta_engine_sources(self, engine_name, source_engines):
308308
endpoint = "engines/{}/source_engines".format(engine_name)
309309
return self.session.request('delete', endpoint, json=source_engines)
310310

311+
def get_search_settings(self, engine_name):
312+
"""
313+
Get search settings for an engine.
314+
315+
:param engine_name: Name of the engine.
316+
"""
317+
endpoint = "engines/{}/search_settings".format(engine_name)
318+
return self.session.request('get', endpoint)
319+
320+
def update_search_settings(self, engine_name, search_settings):
321+
"""
322+
Update search settings for an engine.
323+
324+
:param engine_name: Name of the engine.
325+
:param search_settings: New search settings JSON
326+
"""
327+
endpoint = "engines/{}/search_settings".format(engine_name)
328+
return self.session.request('put', endpoint, json=search_settings)
329+
330+
def reset_search_settings(self, engine_name):
331+
"""
332+
Reset search settings to default for the given engine.
333+
334+
:param engine_name: Name of the engine.
335+
"""
336+
endpoint = "engines/{}/search_settings/reset".format(engine_name)
337+
return self.session.request('post', endpoint)
338+
311339
@staticmethod
312340
def create_signed_search_key(api_key, api_key_name, options):
313341
"""

tests/test_client.py

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -552,3 +552,98 @@ def test_delete_meta_engine_sources(self):
552552
response = self.client.delete_meta_engine_sources(
553553
self.engine_name, [source_engine_name])
554554
self.assertEqual(response, expected_return)
555+
556+
def test_get_search_settings(self):
557+
expected_return = {
558+
"search_fields": {
559+
"name": {
560+
"weight": 1
561+
},
562+
"description": {
563+
"weight": 1
564+
}
565+
},
566+
"result_fields": {
567+
"name": {
568+
"raw": {}
569+
},
570+
"description": {
571+
"raw": {}
572+
}
573+
},
574+
"boosts": {}
575+
}
576+
577+
with requests_mock.Mocker() as m:
578+
url = "{}/engines/{}/search_settings".format(
579+
self.client.session.base_url,
580+
self.engine_name
581+
)
582+
m.register_uri('GET', url, json=expected_return, status_code=200)
583+
response = self.client.get_search_settings(self.engine_name)
584+
self.assertEqual(response, expected_return)
585+
586+
def test_update_search_settings(self):
587+
expected_return = {
588+
"search_fields": {
589+
"name": {
590+
"weight": 2
591+
},
592+
"description": {
593+
"weight": 1
594+
}
595+
},
596+
"result_fields": {
597+
"name": {
598+
"raw": {}
599+
},
600+
"description": {
601+
"raw": {}
602+
}
603+
},
604+
"boosts": {}
605+
}
606+
607+
with requests_mock.Mocker() as m:
608+
url = "{}/engines/{}/search_settings".format(
609+
self.client.session.base_url,
610+
self.engine_name
611+
)
612+
m.register_uri('PUT', url, json=expected_return, status_code=200)
613+
response = self.client.update_search_settings(
614+
engine_name=self.engine_name,
615+
search_settings=expected_return
616+
)
617+
self.assertEqual(response, expected_return)
618+
619+
def test_reset_search_settings(self):
620+
expected_return = {
621+
"search_fields": {
622+
"name": {
623+
"weight": 1
624+
},
625+
"description": {
626+
"weight": 1
627+
}
628+
},
629+
"result_fields": {
630+
"name": {
631+
"raw": {}
632+
},
633+
"description": {
634+
"raw": {}
635+
}
636+
},
637+
"boosts": {}
638+
}
639+
640+
with requests_mock.Mocker() as m:
641+
url = "{}/engines/{}/search_settings/reset".format(
642+
self.client.session.base_url,
643+
self.engine_name
644+
)
645+
m.register_uri('POST', url, json=expected_return, status_code=200)
646+
response = self.client.reset_search_settings(
647+
engine_name=self.engine_name
648+
)
649+
self.assertEqual(response, expected_return)

0 commit comments

Comments
 (0)