标签: amazon-cloudsearch

在Cloud Search中使用撇号查询字符串

我有一些字符串'Vick's',我需要使用API​​传递给云搜索.但是当我将它传递给API时,它会抛出一个错误.当我使用'Vick's'而不是Vick's作为搜索字符串时,它不会给出确切的结果.另一方面,搜索'Vick%27s'工作正常.

当我在亚马逊和做一些搜索那里,他们变成罚款"Vick's""Vick\'s".我正在使用用C#编写的Amazing Cloud Search包装器.

我的问题是:如何在云搜索中查询带撇号的字符串?

amazon-web-services amazon-cloudsearch

5
推荐指数
1
解决办法
431
查看次数

如果查询中包含停用词,则不会返回 Amazon Cloudsearch 结果

使用字段的确切内容作为查询查询 Amazon Cloudsearch 时,如果查询(和内容)包含停用词,Cloudsearch 不会返回任何结果。如果我从查询中删除停用词,则返回结果。

我知道在索引性能时会从内容中删除停用词,但我认为它们也会在查询中被忽略以防止这种行为。

为了让冗长的用户获得预期的结果,我是否需要从每种语言的查询中过滤掉停用词,或者 Cloudsearch 是否有办法忽略查询本身中的停用词?

索引字段内容:

The Company Search Test
Run Code Online (Sandbox Code Playgroud)

示例查询

使用停用词:

Query: the company search test
Results: NONE
Run Code Online (Sandbox Code Playgroud)

没有停用词:

Query: company search test
Results: YES
Run Code Online (Sandbox Code Playgroud)

内引:

Query: "the company search test"
Results: YES
Run Code Online (Sandbox Code Playgroud)

此示例的实现细节:

  • 索引字段类型:“文本”
  • 索引字段分析方案:“英文”
  • 为字段选择的所有选项:“返回”、“排序”、“突出显示”
  • QueryParser:“简单”
  • 在 AWS 仪表板中使用测试搜索(如果使用 Go sdk,结果相同)

amazon-web-services amazon-cloudsearch

5
推荐指数
0
解决办法
651
查看次数

Amazon CloudSearch 从 DynamoDB 创建 Null ID

我正在尝试开始使用 Amazon CloudSearch。我的数据位于我想要搜索的 DynamoDB 表中。我能够设置云搜索域,它从表中提取字段并让我设置它们,等等。但是,我上传数据时遇到了一些问题。我告诉它要从中提取 DynamoDB 表,它会提取数据并告诉我它找到了这些项目,我按下了导入按钮,但它给了我关于需要至少一个字段并且需要有一个非空 id 的错误。

我下载了它试图上传的文档列表,并且我看到这个(或类似的)在整个文档中经常重复:

{
    "type": "add",
    "id": "null",
    "fields": {

    }
  },
  {
    "type": "add",
    "id": "null",
    "fields": {
      "libraries": "721409e7-5fca-495d-a625-a5bc5f4a0434~d8ccd611-ae75-418b-91a3-13dd57d46934",
      "shadecolor": "170-98-104",
      "objecttype": "20",
      "timestamp": "2017-01-25T22:43:53.672Z"
    }
  },
Run Code Online (Sandbox Code Playgroud)

显然,我可以看到其中一个文档的 id 为空,根本没有字段,而另一个文档有字段但没有 id,这似乎是问题所在。但是我不知道这些数据来自哪里以及为什么生成它。该 ID 是我的 DynamoDB 哈希键,因此它不能为空,否则 Dynamo 不会接受它。我查看了我的 Dynamo 数据,但找不到任何类似的数据......

有人可以告诉我这里可能发生了什么以及处理它以将我的数据导入 CloudSearch 的最佳方法吗?

amazon-web-services amazon-dynamodb amazon-cloudsearch

5
推荐指数
1
解决办法
377
查看次数

当我尝试在 aws 弹性搜索中注册存储库时出现错误“不允许跨账户传递角色”

我在将存储库注册到 aws 弹性搜索时遇到问题。这是我用来执行此操作的链接:

[ http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-managedomains-snapshots.html#es-managedomains-snapshot-registerdirectory][1]

正如链接中提到的,我复制了以下代码并运行它:

from boto.connection import AWSAuthConnection
Run Code Online (Sandbox Code Playgroud)

类 ESConnection(AWSAuthConnection):

def __init__(self, region, **kwargs):
    super(ESConnection, self).__init__(**kwargs)
    self._set_auth_region_name(region)
    self._set_auth_service_name("es")

def _required_auth_capability(self):
    return ['hmac-v4']

if __name__ == "__main__":

client = ESConnection(
        region='us-east-1',
        host='search-weblogs-etrt4mbbu254nsfupy6oiytuz4.us-east-1.es.example.com',
        aws_access_key_id='my-access-key-id',
        aws_secret_access_key='my-access-key', is_secure=False)

print 'Registering Snapshot Repository'
resp = client.make_request(method='POST',
        path='/_snapshot/weblogs-index-backups',
        data='{"type": "s3","settings": { "bucket": "es-index-backups","region": "us-east-1","role_arn": "arn:aws:iam::123456789012:role/TheServiceRole"}}')
body = resp.read()
print body
Run Code Online (Sandbox Code Playgroud)

我还调整了安全性和帐户 ID 以及……以适应我的情况。当我运行它时,我收到以下错误:

b'{"Message":"Cross-account pass role is not allowed."}'
Run Code Online (Sandbox Code Playgroud)

无论我使用什么都在同一个帐户中,我还向我的用户添加了以下内联策略

{
"Version": "2012-10-17",
"Statement": {
    "Effect": "Allow",
    "Action": "iam:PassRole",
    "Resource": "arn:aws:iam::xxxxxxxxxx:role/myrole"
}
Run Code Online (Sandbox Code Playgroud)

}

任何人都可以帮助我的问题是什么?

amazon-web-services amazon-iam amazon-cloudsearch

5
推荐指数
0
解决办法
2320
查看次数

AWS CloudSearch 重新索引非常慢

我目前正在评估是否可以使用 Amazon CloudSearch 而不是 Elastic Search 来满足我们的搜索需求。现在,我只有大约 4K 的小文档用于测试目的。每当我要求它重新索引时(假设将实例类型从默认更改为 m3.2xlarge 后),需要很长时间(大约 50-60 分钟)才能从处理状态进入活动状态。这是预期的行为吗?有什么改进的建议吗?

amazon-web-services amazon-cloudsearch

5
推荐指数
0
解决办法
742
查看次数

自动将发电机表卸载到云搜索域

我正在大量使用Dynamo DB来处理我正在构建的服务.出现了需要云搜索的新客户端请求.我看到可以通过AWS控制台从发电机表创建云搜索域.

我的问题是:

有没有办法通过API或指定的时间间隔自动将数据从发电机表卸载到云搜索域?

我更喜欢这个手动将dynamo文件卸载到cloudsearch.所有帮助非常感谢!

amazon-web-services amazon-dynamodb amazon-cloudsearch

4
推荐指数
1
解决办法
4047
查看次数

如何使用boto3将文档上载到AWS cloudseach

所以不确定如何指向正确的域

boto3.client('cloudsearchdomain').upload_documents(file, type)
Run Code Online (Sandbox Code Playgroud)

文档https://boto3.readthedocs.io/en/latest/reference/services/cloudsearchdomain.html表示要使用CloudSearch DescribeDomains操作配置域.但是,在CloudSearch的文档中,https: //boto3.readthedocs.io/en/latest/reference/services/cloudsearch.html#CloudSearch.Client.describe_domains 仅列出了一个方法,describe_domains,它仅列出域,信息等.如何指出正确的域名将文档上传到cloudsearch?

amazon-web-services amazon-cloudsearch boto3

4
推荐指数
1
解决办法
1107
查看次数

全文搜索DynamoDB

以下情况:

我正在为客户将元素存储在DyanmoDb中。HashKey是元素ID,Range Key是客户ID。除了这些字段外,我还存储字符串数组->标签(例如[“ Pets”,“ House”])和多行文本。

我想在我的应用程序中提供搜索功能,用户可以在其中键入自由文本或选择标签并获取所有相关元素。

我认为普通的数据库查询不是正确的解决方案。我当时在玩CloudSearch,但是我不确定这是否是正确的解决方案,因为每次用户添加标签时,索引都必须更新...

希望您对我有一些提示。

amazon-web-services elasticsearch amazon-dynamodb amazon-cloudsearch

4
推荐指数
1
解决办法
8026
查看次数

如何使用 Python boto3 库查询 AWS CloudSearch 域?

我正在尝试使用 boto3 以文档为指导查询我的 CloudSearch 域:http ://boto3.readthedocs.io/en/latest/reference/services/cloudsearchdomain.html#client

import boto3
import json

boto3.setup_default_session(profile_name='myprofile')
cloudsearch = boto3.client('cloudsearchdomain')

response = cloudsearch.search(
    query="(and name:'foobar')",
    queryParser='structured',
    returnFields='address',
    size=10
)
print( json.dumps(response) )
Run Code Online (Sandbox Code Playgroud)

...但它失败了:

botocore.exceptions.EndpointConnectionError:无法连接到端点 URL:“ https://cloudsearchdomain.eu-west-1.amazonaws.com/2013-01-01/search

但是我应该如何设置或配置我想要连接的端点或域?我尝试向endpoint请求添加一个参数,认为这可能是文档中的一个意外遗漏,但我收到了以下错误响应:

输入中的未知参数:“端点”,必须是以下之一:光标、expr、facet、filterQuery、highlight、partial、query、queryOptions、queryParser、return、size、sort、start、stats

文档说:

提交搜索请求的端点是特定于域的。您向域的搜索端点提交搜索请求。要获取域的搜索终端节点,请使用 Amazon CloudSearch 配置服务 DescribeDomains 操作。域的终端节点也显示在 Amazon CloudSearch 控制台的域控制面板上。

我知道我的搜索端点是什么,但我如何提供它?

python amazon-web-services amazon-cloudsearch boto3

4
推荐指数
1
解决办法
2395
查看次数

CloudSearch - 当字段不存在时返回结果

是否有 CloudSearch 结构化查询可以返回字段中没有值的结果?例如,我有一个名为的字段target_date并不总是有值,并且我想返回没有 target_date 的所有结果。该字段未清零或设置为默认值;对于没有日期的项目来说,它根本不存在。

还有一个案例。我需要在target_dateAND 后返回所有结果,并包含没有现有日期的任何结果。我正在使用的结构化查询是target_date:['2000-03-03T00:00:00Z',}. 查找不存在日期的查询应该使用and运算符,例如:(and target_date:['2000-03-03T00:00:00Z',} [QUERY_GOES_HERE])

amazon-web-services amazon-cloudsearch

3
推荐指数
1
解决办法
2542
查看次数