我正在写一个资产管理应用程序.它允许用户通过向资产添加html控件(如文本字段,选择菜单等)来存储任意资产属性.然后,该属性的JSON表示将成为存储在couchdb中的资产JSON文档的一部分.资产在couchdb中具有以下结构:
{
"_id": "9399fb27448b1e5dfdca0181620418d4",
"_rev": "12-fa50eae8b50f745f9852e9fab30ef5d9",
"type": "asset",
"attributes": [
{
"id": "9399fb27448b1e5dfdca01816203d609",
"type": "text",
"heading": "Brand",
"data": "",
"requiredBySystem": true
},
{
"id": "9399fb27448b1e5dfdca01816203e68e",
"type": "userSelectMenu",
"heading": "Assigned To",
"data": "",
"requiredBySystem": true
},
{
"id": "9399fb27448b1e5dfdca01816203e9c9",
"type": "categories",
"heading": "Categories",
"data": [
"0d7e6233e5f48b4f55c5376bf00b1be5",
"0d7e6233e5f48b4f55c5376bf00d94cf"
],
"requiredBySystem": true
},
{
"id": "9399fb27448b1e5dfdca01816207uy5a",
"type": "radio",
"heading": "Radio Buttons",
"data": [
{
"text": "Button 1",
"checked": false
},
{
"text": "Button 2",
"checked": true
}
],
"requiredBySystem": true
},
{
"id": …Run Code Online (Sandbox Code Playgroud) 这是我的情景:
我有一个包含用户列表的页面.我通过我的Web界面创建一个新用户并将其保存到服务器.服务器在elasticsearch中索引文档并成功返回.然后我被重定向到不包含新用户的列表页面,因为文档可能需要1秒才能在elasticsearch中搜索
elasticsearch指南表示您可以手动刷新索引,但表示不会在生产中执行此操作.
...每次在生产中索引文档时都不要手动刷新; 这会伤害你的表现.相反,您的应用程序需要了解Elasticsearch的近实时性并为其做好准备.
我想知道其他人是如何解决这个问题的?我希望有一个事件或我可以听的东西会告诉我什么时候该文件可用于搜索,但似乎没有这样的东西.简单地等待1秒似乎是合理的,但这似乎是一个坏主意,因为它可能花费的时间比这少得多.
谢谢!
我在couchdb中有一些文件,其中包含不同关联文档的id数组字段:
{
associatedAssets: ["4c67f6241f4a0efb7dc2abc24a004dfe", "270fd4508a1222a1e2a27cbe7f002d9z"]
}
Run Code Online (Sandbox Code Playgroud)
我想写一个视图,让我传入一个本身就是一个id数组的键,然后返回其associatedAssets字段包含一个或多个通过键数组传入的id的文档,例如
$.ajax({
url: "/db/_design/design_doc/_view/summaryByAssociatedAssets",
type: "post",
data: JSON.stringify({keys: ["4c67f6241f4a0efb7dc2abc24a004dfe", "6c67f6241f4a0efb7dc2abc24a004dfd"]}),
dataType: "json",
contentType: "application/json",
})
.done(function(resp){
console.log(resp[0]);
});
Run Code Online (Sandbox Code Playgroud)
将返回其associatedAssets数组包含一个或多个键"4c67f6241f4a0efb7dc2abc24a004dfe","6c67f6241f4a0efb7dc2abc24a004dfd"的文档.
我无法在我的视图中访问密钥,所以我不确定我是否可以这样做?有没有更好的方法来实现这一目标?
谢谢!
我在我的映射中设置了日期字段,如下所示:
"groupsAssignedDate" : {
"type" : "date",
"format" : "MM-dd-YYYY"
}
Run Code Online (Sandbox Code Playgroud)
在我的应用程序中,字段groupsAssignedDate最初设置为空字符串.分配组时,将生成unix时间戳并将其存储在字段中.我正在尝试使用elasticsearch的批量更新功能来引入一组groupAssignedDate为""的文档,因为尚未分配任何组.但Elasticsearch不会为文档编制索引.这是在日志文件中:
Failed to parse [groupsAssignedDate]
...
failed to parse date field [], tried both date format [MM-dd-YYYY], and timestamp number
Run Code Online (Sandbox Code Playgroud)
看来elasticsearch支持JSON null值...我是否需要将我的文档从使用""切换为null或者是否有某种方式我可以支持使用空字符串代替?
有谁知道我是否可以在couchdb 1.2中更改密码?要创建一个用户,我有一个获取用户信息的表单,然后像这样发布到_users数据库(下面的url中的'users'代理):
// Create a user
var userObj = {
_id: "org.couchdb.user:test",
type: "user",
name: "test",
roles: ["user"],
emailAddress: "test@testy.com",
firstName: "Test",
lastName: "Test",
password: "password"
};
$.ajax({
url: "/users/org.couchdb.user:test",
type: "PUT",
dataType: "json",
contentType:"application/json",
data: JSON.stringify(userObj)
});
Run Code Online (Sandbox Code Playgroud)
Couchdb 1.2为我生成密码哈希和盐并存储用户.它很棒.要更新密码,我尝试检索用户,删除password_sha和salt字段,添加密码字段,然后重新发布文档.我希望Couch能为我重新计算password_sha和salt字段并更新文档,但事实并非如此.password_sha和salt字段未更新.
// Update a user
$.get("/users/org.couchdb.user:test")
.done(function(userDoc){
delete userDoc.password_sha;
delete userDoc.salt
userDoc.password = "test";
$.ajax({
url: "/users/org.couchdb.user:test",
type: "PUT",
dataType: "json",
contentType:"application/json",
data: userDoc
});
});
Run Code Online (Sandbox Code Playgroud)
我怀疑沙发只会在创建文档时生成password_sha和salt字段.如果是这种情况,我应该生成自己的password_sha和salt字段并将其发布到更新的doc中吗?我在这里错过了什么吗?
谢谢!
我正在使用以下内容对Elasticsearch中具有"usernamesAssigned"属性的文档进行排序.usernamesAssigned是一个字符串数组:
"sort": [
{
"_script": {
"script": "doc["usernamesAssigned"].values.sort().join()",
"type": "string",
"lang": "js",
"order": "asc"
}
}
]
Run Code Online (Sandbox Code Playgroud)
我想知道在不使用基于脚本的排序的情况下是否有更有效的方法来做到这一点?
希望有人可以帮助我解决似乎是权限错误的问题。我正在尝试使用官方的Elasticsearch Docker镜像启动一个3节点的Elasticsearch集群。启动容器时,我在/ usr / share / elasticsearch / data / nodes上从Elasticsearch收到“拒绝访问”错误,因此我尝试添加命令以使Elasticsearch成为/ usr / share / elasticsearch / data的所有者。但是当我包含chown命令时,我得到了这些错误:
chown: cannot read directory '/usr/share/elasticsearch/data/lost+found': Permission denied
chown: changing ownership of '/usr/share/elasticsearch/data': Operation not permitted
Run Code Online (Sandbox Code Playgroud)
这是我的statefulset yaml文件:
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
name: esnode
spec:
serviceName: elasticsearch-transport
replicas: 3
template:
metadata:
labels:
app: evo-pro-cluster
spec:
initContainers:
- name: init-sysctl
image: busybox
imagePullPolicy: IfNotPresent
command: ["sysctl", "-w", "vm.max_map_count=262144"]
securityContext:
privileged: true
containers:
- name: elasticsearch
securityContext:
privileged: true
capabilities:
add:
- IPC_LOCK
- …Run Code Online (Sandbox Code Playgroud)