我正在尝试检查提供的版本是否是有效的受支持版本.我已经在变量中设置了可接受版本的列表,如果提供的版本不在列表中,我想要失败.但是,我不确定如何做到这一点.
#/role/vars/main.yml
---
acceptable_versions: [2, 3, 4]
Run Code Online (Sandbox Code Playgroud)
和
#/role/tasks/main.yml
---
- fail:
msg: "unsupported version"
with_items: "{{acceptable_versions}}"
when: "{{item}} != {{version}}"
- name: continue with rest of tasks...
Run Code Online (Sandbox Code Playgroud)
以上是我想要做的事情,但是我无法弄清楚是否有一种单行方式来构建对故障模块的"list contains"调用.
我正在创建一个首先创建新用户名的剧本.然后我想运行"moretasks.yml"作为我刚刚创建的新用户.目前,我正在为每项任务设置remote_user.有没有办法可以为整套任务设置一次?我似乎无法找到这方面的例子,也没有试图将remote_user转移到帮助之外.
以下是main.yml:
---
- name: Configure Instance(s)
hosts: all
remote_user: root
gather_facts: true
tags:
- config
- configure
tasks:
- include: createuser.yml new_user=username
- include: moretasks.yml new_user=username
- include: roottasks.yml #some tasks unrelated to username.
Run Code Online (Sandbox Code Playgroud)
moretasks.yml:
---
- name: Task1
copy:
src: /vagrant/FILE
dest: ~/FILE
remote_user: "{{newuser}}"
- name: Task2
copy:
src: /vagrant/FILE
dest: ~/FILE
remote_user: "{{newuser}}"
Run Code Online (Sandbox Code Playgroud) (我在CentOS 5.8上运行)。我一直在遵循群集(多服务器)Zookeeper设置的指导,但是在尝试启动服务器时遇到错误。当我按照文档中的描述运行命令时:
java -cp zookeeper-3.4.6.jar:lib/log4j-1.2.16.jar:conf \ org.apache.zookeeper.server.quorum.QuorumPeerMain conf/zoo.cfg
Run Code Online (Sandbox Code Playgroud)
我得到错误:
Error: Could not find or load main class org.apache.zookeeper.server.quorum.QuorumPeerMain
Run Code Online (Sandbox Code Playgroud)
我有这样的文件位置,并且正在〜/ zookeeper-3.4.6目录中运行:
~/zookeeper-3.4.6/zookeeper-3.4.6.jar
~/zookeeper-3.4.6/conf/zoo.cfg
~/zookeeper-3.4.6/data/myid
~/zookeeper-3.4.6/lib/log4j-1.2.16.jar
~/zookeeper-3.4.6/bin/zkServer.sh
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么会发生此错误?我不太了解要传递的参数,因此很难调试路径问题。附带说明一下,我尝试运行./zookeeper-3.4.6/bin/zkServer.sh start,但确实能成功运行,但是文档似乎表明该命令适用于单节点实例。
编辑:
我可以通过修改命令并取出零件来取得一些进展:conf \,所以现在我正在运行:
java -cp zookeeper-3.4.6.jar:lib/log4j-1.2.16.jar: org.apache.zookeeper.server.quorum.QuorumPeerMain conf/zoo.cfg
Run Code Online (Sandbox Code Playgroud)
我收到一个新错误,但这是进度。
java -cp zookeeper-3.4.6.jar:lib/log4j-1.2.16.jar:conf \ org.apache.zookeeper.server.quorum.QuorumPeerMain conf/zoo.cfg
Run Code Online (Sandbox Code Playgroud)
对应于QuorumPeerMain的第63和64行
public class QuorumPeerMain {
private static final Logger LOG = LoggerFactory.getLogger(QuorumPeerMain.class);
Run Code Online (Sandbox Code Playgroud) 我有:
Microsoft.Office.Interop.Excel.Workbook wb;
Microsoft.Office.Interop.Excel.Name name;
Run Code Online (Sandbox Code Playgroud)
有没有办法获得指定范围在给定工作簿中的工作表名称,假设我已经获得了命名范围的Name对象和wb?
详细说来,假设我的工作簿中有两个命名范围.两个命名范围都具有相同的名称(比如说"myName"),但是一个范围限定为Sheet1,另一个范围限定为工作簿.
给定命名范围的名称(字符串),我想获取工作簿级别命名范围.
如果我使用本机调用:wb.Names.Item("myName"),则返回工作表作用域命名范围.
如果我改为:wb.Names.Item("Sheet1!myName"),那显然会返回工作表范围的名称范围.我发现我可以使用它来指定特定于工作表的工作表,但不能指定工作簿.
无论如何我可以指定我想要工作簿作用域吗?
我的解决方法是迭代所有Name的列表,并比较.Name属性以获取工作簿范围命名范围.这是有效的,因为.Name属性附加了"Sheet1!" 到工作表范围命名范围.然而,这是非常昂贵的,我想避免它.
在我的环境中,elasticsearch位于只打开标准端口(80,443等)的服务器上.所有其他港口都有防火墙.我目前在端口80上有一个反向代理,它将所有elasticsearch HTTP请求重新路由到elasticsearch的http端口.
我还想将TCP请求重新路由到elasticsearch的传输端口,以便我的本地客户端可以直接将elasticsearch作为客户端节点进行查询.Nginx 1.9.0最近允许TCP负载平衡,这是我想要用于此,但我在使我的系统工作时遇到一些麻烦.这是我的nginx.conf文件(删除HTTP上下文以隔离问题):
worker_processes 1;
events {
worker_connections 1024;
}
stream {
server {
listen 80;
proxy_pass 127.0.0.1:9300;
}
}
Run Code Online (Sandbox Code Playgroud)
我的客户端节点设置为与mydomain.com:80通信,因此理想情况下应将所有流量路由到内部传输端口.但是,我得到以下例外情况:org.elasticsearch.client.transport.NoNodeAvailableException: None of the configured nodes are available
我需要在客户端节点或tcp代理上配置其他东西吗?
一些额外的信息.我将Elasticsearch的传输端口从9300更改为8030,这是一个打开的端口.当我相应地将我的nginx.conf更改为proxypass到127.0.0.1:8030我的本地客户端节点开始工作时,并得到了对我的查询的适当响应.
所以问题似乎是如果我是代理传递给已经打开的端口,它可以工作,但如果端口关闭(9300),代理传递失败.有谁知道为什么会这样,以及如何解决它?如果可能的话,我宁愿坚持使用9300端口.
有人对此提出了类似的问题(请参阅从 Elasticsearch 中的搜索中删除重复的文档),但我还没有找到使用多个字段作为“唯一键”进行重复数据删除的方法。这是一个简单的例子来说明我正在寻找的一些东西:
假设这是我们的原始数据:
{ "name": "X", "event": "A", "time": 1 }
{ "name": "X", "event": "B", "time": 2 }
{ "name": "X", "event": "B", "time": 3 }
{ "name": "Y", "event": "A", "time": 4 }
{ "name": "Y", "event": "C", "time": 5 }
Run Code Online (Sandbox Code Playgroud)
我基本上想根据名称和事件获得不同的事件计数。我想避免重复计算在同名 X 上发生的事件 B 两次,所以我要寻找的计数是:
event: A, count: 2
event: B, count: 1
event: C, count: 1
Run Code Online (Sandbox Code Playgroud)
有没有办法设置 agg 查询,如相关问题所示?我考虑过的另一个选项是使用特殊键字段(即“X_A”、“X_B”等)为对象建立索引。然后我可以简单地对这个字段进行重复数据删除。我不确定哪种方法是首选方法,但我个人不希望用额外的元数据索引数据。
这里有类似的问题Elasticsearch Map对not_analyzed文件不敏感,但是我的处理方式略有不同,因为我处理的是特殊字符.
大多数人建议keyword analyzer结合使用lowercase filter.但是,这对我的情况不起作用,因为关键字分析器在空格上标记,特殊字符如^, #, etc.这打破了我想要的支持类型.
即
^HELLOWORLD应该匹配搜索^helloworld,但不是helloworld#FooBar应该匹配#foobar但不匹配foobar.Foo Bar应该匹配foo bar,但不是foo或bar.与我们在此处看到的类似功能https://www.elastic.co/guide/en/elasticsearch/guide/current/_finding_exact_values.html#_term_filter_with_numbers,但不区分大小写.
有谁知道如何做到这一点?
似乎我的问题的核心是多字段,因为关键字+小写似乎解决了标题中提出的问题.但是,为多字段值属性提出此问题会更准确.
test_mapping.json:
{
"properties" : {
"productID1" : {
"type" : "string",
"index_analyzer" : "keyword_lowercase",
"search_analyzer" : "keyword_lowercase"
},
"productID2" : {
"type": "multi_field",
"keyword_edge_ID": {
"type": "string",
"index_analyzer":"keyword_lowercase_edge",
"search_analyzer":"keyword_lowercase_edge"
},
"productID2": {
"type": "string",
"index": "analyzed",
"store": …Run Code Online (Sandbox Code Playgroud) 尝试在java.time.OffsetDateTimeMongoDB中使用新对象。我正在使用org.springframework.data:spring-data-mongodb:1.8.2.RELEASE。它似乎可以正常写入数据库,但是当我尝试读取数据时,它将引发以下异常。如果我改为将对象更改为just LocalDateTime,则它能够成功读取/写入数据库。我是否需要做其他配置才能添加对OffsetDateTime对象的支持?
org.springframework.data.mapping.model.MappingException: No property null found on entity class java.time.OffsetDateTime to bind constructor parameter to!
at org.springframework.data.mapping.model.PersistentEntityParameterValueProvider.getParameterValue(PersistentEntityParameterValueProvider.java:74) ~[spring-data-commons-1.11.2.RELEASE.jar!/:na]
at org.springframework.data.mapping.model.SpELExpressionParameterValueProvider.getParameterValue(SpELExpressionParameterValueProvider.java:63) ~[spring-data-commons-1.11.2.RELEASE.jar!/:na]
at org.springframework.data.convert.ReflectionEntityInstantiator.createInstance(ReflectionEntityInstantiator.java:71) ~[spring-data-commons-1.11.2.RELEASE.jar!/:na]
at org.springframework.data.convert.ClassGeneratingEntityInstantiator.createInstance(ClassGeneratingEntityInstantiator.java:83) ~[spring-data-commons-1.11.2.RELEASE.jar!/:na]
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:251) ~[spring-data-mongodb-1.8.2.RELEASE.jar!/:na]
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:231) ~[spring-data-mongodb-1.8.2.RELEASE.jar!/:na]
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.readValue(MappingMongoConverter.java:1186) ~[spring-data-mongodb-1.8.2.RELEASE.jar!/:na]
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.access$200(MappingMongoConverter.java:78) ~[spring-data-mongodb-1.8.2.RELEASE.jar!/:na]
at org.springframework.data.mongodb.core.convert.MappingMongoConverter$MongoDbPropertyValueProvider.getPropertyValue(MappingMongoConverter.java:1134) ~[spring-data-mongodb-1.8.2.RELEASE.jar!/:na]
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.getValueInternal(MappingMongoConverter.java:870) ~[spring-data-mongodb-1.8.2.RELEASE.jar!/:na]
at org.springframework.data.mongodb.core.convert.MappingMongoConverter$1.doWithPersistentProperty(MappingMongoConverter.java:283) ~[spring-data-mongodb-1.8.2.RELEASE.jar!/:na]
at org.springframework.data.mongodb.core.convert.MappingMongoConverter$1.doWithPersistentProperty(MappingMongoConverter.java:271) ~[spring-data-mongodb-1.8.2.RELEASE.jar!/:na]
at org.springframework.data.mapping.model.BasicPersistentEntity.doWithProperties(BasicPersistentEntity.java:309) ~[spring-data-commons-1.11.2.RELEASE.jar!/:na]
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:271) ~[spring-data-mongodb-1.8.2.RELEASE.jar!/:na]
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:231) ~[spring-data-mongodb-1.8.2.RELEASE.jar!/:na]
Run Code Online (Sandbox Code Playgroud) 想象一下,我们在mongodb中存储了以下一组文档:
{ "fooId" : "1", "status" : "A", "timestamp" : ISODate("2016-01-01T00:00:00.000Z") "otherInfo" : "BAR", ... }
{ "fooId" : "1", "status" : "B", "timestamp" : ISODate("2016-01-02T00:00:00.000Z") "otherInfo" : "BAR", ... }
{ "fooId" : "1", "status" : "C", "timestamp" : ISODate("2016-01-03T00:00:00.000Z") "otherInfo" : "BAR", ... }
{ "fooId" : "2", "status" : "A", "timestamp" : ISODate("2016-01-01T00:00:00.000Z") "otherInfo" : "BAR", ... }
{ "fooId" : "2", "status" : "B", "timestamp" : ISODate("2016-01-02T00:00:00.000Z") "otherInfo" : "BAR", ... }
{ "fooId" : "3", …Run Code Online (Sandbox Code Playgroud)