share facebook facebook facebook twitter twitter menu hatena pocket slack

2021.04.14 WED

boto3でCloudSearch検索ドメインに複合クエリを実行する

西田 駿史

WRITTEN BY 西田 駿史

structured クエリパーサーを使用して、一致とフィールドを特定の演算子(AND, OR, NOT)で結合します。

↑をboto3でやってみました。

cloudsearchdomain.py

import boto3

endpoint_url = 'https://search-todofuken-XXXXXXXXXXXXXXXXXXXXXXXXX.ap-northeast-1.cloudsearch.amazonaws.com'

cloudsearchdomain = boto3.client(
    'cloudsearchdomain', endpoint_url=endpoint_url)

query = """
(and 
  prefecture:'{prefecture}'
  city:'{city}'
  (range
    field=zip [{from_zip}, {to_zip}]
  )
)
""".format(prefecture='宮城県', city='仙台市', from_zip=9830000, to_zip=9830100)

returnFields = [
    'city',
    'kana_town',
]

results = cloudsearchdomain.search(
                query=query,
                queryParser='structured',
                returnFields=','.join(returnFields),
                size=3)

print('found:%d' % results["hits"]["found"])
print('count:%d' % len(results["hits"]["hit"]))

for item in results["hits"]["hit"]:
    print(item["fields"])
$ python cloudsearchdomain.py
found:34
count:3
{'city': ['仙台市宮城野区'], 'kana_town': ['タゴ']}
{'city': ['仙台市宮城野区'], 'kana_town': ['タゴニシ']}
{'city': ['仙台市宮城野区'], 'kana_town': ['ツルマキ']}

CloudSearchのboto3のサンプルコードあんまり転がってないので参考になれば。

元記事はこちら

boto3でCloudSearch検索ドメインに複合クエリを実行する

西田 駿史

西田 駿史

2019年4月入社。第四開発事業部グループリーダー。海岸オフィス所属

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。