我试图使用案例对象模拟枚举行为.它感觉有点冗长,而不是优雅,我想知道是否有更好的方法来实现这一目标.
所以这是一个例子:
sealed trait Operator
object Operator{
def apply(value: String) = value match {
case EqualsOp.name => EqualsOp
case NotEqualOp.name => NotEqualOp
case ContainsOp.name => ContainsOp
case NotContainsOp.name => NotContainsOp
case _ => UnknownOp
}
}
case object EqualsOp extends Operator { val name = "equals" }
case object NotEqualOp extends Operator { val name = "not_equals" }
case object ContainsOp extends Operator { val name = "contains" }
case object NotContainsOp extends Operator { val name = "not_contains" } …Run Code Online (Sandbox Code Playgroud) 不确定缺少什么,但是当我使用注册请求时,在我的 cognito 用户池中创建了一个用户,该用户具有 UUID 用户名(实际上是子属性值)而不是电子邮件。
val signup = new SignUpRequest()
.withUsername(user.email) // <- cognito ignore this, and use a UUID for username
.withClientId(clientId)
.withSecretHash(secret)
.withPassword(user.password)
.withUserAttributes(List(email, givenName, familyName))
Run Code Online (Sandbox Code Playgroud)
查看文档,当电子邮件的值无效时使用 UUID。
我使用的电子邮件类似于:roc.roc+test@foo.com(这是一个有效的电子邮件)
顺便说一句,当我使用AdminCreateUserRequestapi 时,它会按预期使用电子邮件作为用户名创建。
val createUser =
new AdminCreateUserRequest()
.withUsername(user.email)
.withUserPoolId(cognitoUserPoolId)
.withUserAttributes(attributes)
client.adminCreateUser(createUser)
Run Code Online (Sandbox Code Playgroud)
编辑:现在有快照:
这是使用注册api -

这是使用创建用户 api:

只有注册不起作用,我错过了什么?
有没有办法配置一个分析器,只能在索引之前降低输入的大小写?
例如,如果我得到:
"name": "Foo Bar"
Run Code Online (Sandbox Code Playgroud)
输出术语应该是"foo bar",因此我可以使用术语查询来查询该确切术语.
我的用例是使用术语查询索引我稍后要查询的实体,因此我希望每个事物在小写后都是索引.
谢谢!
我试图在我的查询中使用脚本字段.我启用了沙盒脚本,并尝试使用表达式来计算新字段.
问题是我收到以下错误:
{
"type": "expression_script_compilation_exception",
"reason": "Only the member variable [value] or member methods may be accessed on a field when not accessing the field directly"
}
Run Code Online (Sandbox Code Playgroud)
似乎只有"价值"可以获得.我在这里想念的是什么?
运行以下查询时:
{
"query": {
"match_all": {}
},
"script_fields" : {
"field1" : {
"script" : {
"lang": "expression",
"inline": "doc['about.hobbies'].empty"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
制图:
{
"my_index": {
"mappings": {
"type": {
"properties": {
"about": {
"properties": {
"hobbies": {
"type": "string",
"analyzer": "lowercase"
}
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
小解释:我有一个字段,可以包含字符串值列表. …
我想为Kafka配置一些主题及其独特的保留设置。因此,当我启动Kafka时,它将使用这些设置加载server.properties文件。
我发现的唯一方法是启动Kafka,然后使用kafka-topics.sh脚本启动和配置主题。
例:
bin/kafka-topics.sh --zookeeper zk.yoursite.com --alter --topic as-access --config retention.ms=86400000
Run Code Online (Sandbox Code Playgroud)
我在docker上使用Kafka,因此,除了将入口点设置为启动Kafka的实际脚本之外,我需要创建自己的脚本来启动Kafka并运行一些shell命令来配置这些主题。另外,如果我需要自己创建这些主题,则需要启动并创建一些与已经存在的主题有关的逻辑。而且我不想走那条路。
我正在尝试检索索引中的所有文档,同时只返回_id字段.
基本上我想要检索我拥有的所有文档ID.
使用时:
{
"query": {
"match_all": {}
},
"fields": []
}
Run Code Online (Sandbox Code Playgroud)
我得到的点击:"_ index","_ type","_ id","_score","_ source"这是我需要的方式.
编辑(答案):所以我的问题是我使用KOPF来运行查询,结果不准确(得到_source和更多......)!使用curl时,我得到了正确的结果!
所以上面的查询实际上实现了我所需要的!您还可以使用:
{
"query": {
"match_all": {}
},
"_source": false,
}
Run Code Online (Sandbox Code Playgroud)
要么
{
"query": {
"match_all": {}
},
"fields": ["_id"]
}
Run Code Online (Sandbox Code Playgroud) 我试图以务实的方式测量我的应用程序内存占用量.我正在使用java.lang.management类来计算它
val heap = ManagementFactory.getMemoryMXBean.getHeapMemoryUsage
val nonHeap = ManagementFactory.getMemoryMXBean.getNonHeapMemoryUsage
val total = heap + nonHeap + (?)
Run Code Online (Sandbox Code Playgroud)
我假设两者的总和将给出应用程序使用的内存总量,但实际情况并非如此,top命令提供的实际大小更大.
所以我想知道我错过了什么?除了获取应用程序的总内存使用量之外,我还需要添加到此等式中.
我在 Elasticsearch 中对文档进行建模时遇到问题,而关系数据库中的外键可以很轻松地解决我的问题。我越接近尝试建立亲子关系,但我的案例有多个父母对同一份文件(我可能会以错误的方式看待它)
考虑以下来自类型 person:
doc1 的 3 个文档:
{
_id: 10
"source":{
"first_name": "child1_first_name",
"last_name": "child1_last_name",
"age" : 10,
"phone": "0505055050",
.
.
"mother":{
"id": 100
"firt_name": "mother1",
"last_name": "last_name1"
}
}
}
Run Code Online (Sandbox Code Playgroud)
文档2:
{
_id: 11
"source":{
"first_name": "child2_first_name",
"last_name": "child2_last_name",
"age" : 12,
"phone": "878787878",
.
.
"mother":{
"id": 100
"firt_name": "mother1",
"last_name": "last_name1"
}
}
}
Run Code Online (Sandbox Code Playgroud)
文档3:
{
_id: 100
"source":{
"first_name": "mother1",
"last_name": "last_name1",
"age" : 40,
"phone": "12212121212",
.
.
"mother":{}
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是当母亲更新她的姓氏或名字时。我是否需要找到所有文件,id …
我有一个嵌套对象,例如:
{
"name:"ABC",
"nest1":{
{
"field1": null,
"field2": null,
"field3": [],
"field4": {},
},
"nest2":{
"field1":"123",
"field2":null
}
}
Run Code Online (Sandbox Code Playgroud)
我想清理这个 json,并确保输出是:
{
"name:"ABC",
"nest2":{
"field1":"123"
}
}
Run Code Online (Sandbox Code Playgroud)
我写了下面的一段代码:
def withoutNullAndEmptyObj(json: JsValue): JsValue = {
json match {
case JsObject(fields) =>
if (fields.isEmpty) JsNull
else{
fields.foldLeft(new JsObject(Map()))((agg, field) =>
field match{
case (_, JsNull) => agg
case other@(name, value: JsArray) => if (value == emptyArray) agg else agg+other
case (name, value: JsObject) => if (value == emptyObject) agg else agg+(name, withoutNullAndEmptyObj(value)) …Run Code Online (Sandbox Code Playgroud) 我试图了解什么是与Sanic一起使用aiohttp的正确方法。
从aiohttp 文档中,我发现以下内容:
不要为每个请求创建会话。每个应用程序很可能需要一个会话来执行所有请求。更复杂的情况可能需要在每个站点上进行一次会话,例如,一个会话用于Github,另一个会话用于Facebook API。无论如何,为每个请求建立会话是一个非常糟糕的主意。会话内部包含一个连接池。连接重用和保持活动状态(默认情况下均处于启用状态)可能会提高整体性能。
当我去Sanic文档时,我会找到一个这样的例子:
这是一个例子:
from sanic import Sanic
from sanic.response import json
import asyncio
import aiohttp
app = Sanic(__name__)
sem = None
@app.route("/")
async def test(request):
"""
Download and serve example JSON
"""
url = "https://api.github.com/repos/channelcat/sanic"
async with aiohttp.ClientSession() as session:
async with sem, session.get(url) as response:
return await response.json()
app.run(host="0.0.0.0", port=8000, workers=2)
Run Code Online (Sandbox Code Playgroud)
这不是管理aiohttp会话的正确方法...
那么正确的方法是什么?
我应该在应用程序中启动会话并将会话注入到所有层中的所有方法吗?
我发现的唯一问题是这个,但这无济于事,因为我需要创建自己的类来使用该会话,而不是sanic。
还可以在Sanic文档中找到此内容,该文档指出您不应在eventloop之外创建会话。
我有点困惑:(正确的方法是什么?
我使用specs2作为我的测试框架。我想模拟一个用例,其中 actionA 返回失败的 future。像这样:
val actionA = mock[ActionA]
val actionB = new ActionB(actionA)
actionA.doSomthing(x) returns Future.failed(new Exception("bla"))
try {
Await.result(actionB.doSomthing(request), 1 seconds)
}catch {
case e: Exception => println("exception caught: " + e);
}
Run Code Online (Sandbox Code Playgroud)
问题是,如果我没有捕获到这个异常,我的测试就会退出,specs2 是否有更好的方法来吞掉异常?有没有更好的方法来测试这种情况?
谢谢!
scala ×3
aiohttp ×1
apache-kafka ×1
asynchronous ×1
aws-cognito ×1
docker ×1
enums ×1
java-8 ×1
json ×1
jvm ×1
kafka-python ×1
mockito ×1
python ×1
python-3.x ×1
sanic ×1
specs2 ×1
unit-testing ×1