6

ボトを使ってAmazonCloudSearchに接続し始めたところです。

例は機能しましたが、既存のドメインに接続する例が見つかりません。すべての例で新しいドメインが作成されます。

調べてみると、get_domainが見つかりましたが、接続オブジェクトで呼び出すと失敗します。

>>> conn.get_domain('foo')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'Layer2' object has no attribute 'get_domain'

既存のドメインに接続する方法について何か提案はありますか?

[編集]私はこれから始めました:http://boto.cloudhackers.com/en/latest/cloudsearch_tut.html

だから、私がこれをしているのはすべて

import boto
conn = boto.connect_cloudsearch()
4

5 に答える 5

10

conn.list_domains()現在のすべてのドメインのドメインオブジェクトのリストを返すようにするかconn.lookup('foo')、指定したドメイン名のドメインオブジェクトを返すようにすることができます。

于 2012-10-06T20:33:52.573 に答える
7

これは完璧なソリューションです。 boto2.38.0を使用しています

私は他の人が直面している同じ問題を抱えていました。次に、このスクリプトを作成して、aws検索ドメインに接続して結果を取得しました

import boto.cloudsearch2
from boto.cloudsearch2.layer2 import Layer2
from boto.cloudsearch2.domain import Domain

# from boto.cloudsearch.domain import Domain
conn = boto.cloudsearch2.connect_to_region("xxxxxx",
                aws_access_key_id='xxxxxxxxxx',
                aws_secret_access_key='xxxxxxxxx')

domain_data =  conn.describe_domains('domaainname')

domain_data = (domain_data['DescribeDomainsResponse']
                          ['DescribeDomainsResult']
                          ['DomainStatusList'])

domain = Domain(conn, domain_data[0])
search_service = domain.get_search_service()
results = search_service.search(q="abc")

print map(lambda x: x, results)

エラーがあれば教えてください。これがすべての人に役立つことを願っています。

于 2015-05-26T06:02:08.347 に答える
2

boto 2.36を使用して、ソースコードを確認することでこれを機能させました。

import boto.cloudsearch
# login to AWS
conn = boto.connect_cloudsearch2(region="us-west-1",
                aws_access_key_id='xxxxx',
                aws_secret_access_key='xxxxx')


# get the right Domain:
domain = conn.lookup('toolbox')

print domain
于 2015-03-19T23:48:34.627 に答える
0

これは私にとってはうまく
いきました。ドメインは1つだけ
です。dom=Domain(con、con.describe_domains()[0])

于 2013-07-08T14:28:30.903 に答える
0

私は最初、Layer2アプローチを使用して接続を実装しました。

Layer2(region='region name').lookup('domain name')

ただし、いくつかのプロファイリングを行った後、接続を作成する際の待ち時間が非常に長いことがわかりました。

私が非常に高いと言うとき、接続を作成する時間は、実際にクエリを実行して応答を取得する時間(ほとんどの場合> 500ms)に匹敵することを意味します。

したがって、私の解決策はDomain直接作成することでした。注:このソリューションは脆弱ですが、レイテンシーが大幅に減少します

次のようにしてドメインを作成できます(これらの値の多くは、次のようにして見つけることができますaws cloudsearch describe-domains)。

        domain = Domain(boto.cloudsearch2.connect_to_region('region name'), {
            'Created': True,
            'Deleted': False,
            'Processing': False,
            'RequiresIndexDocuments': False,
            'DomainId': 'domain_id',
            'DomainName': 'domain_name',
            'SearchInstanceCount': 2,
            'SearchPartitionCount': 1,
            'DocService': {
                'Endpoint': 'doc_service_endpoint',
            },
            'ARN': 'domain_arn',
            'SearchService': {
                'Endpoint': 'search_service_endpoint'
            }
        })
于 2017-06-07T18:10:42.177 に答える