我对弹性搜索很新,想写一个关注两个字段的查询.我的意思是字段的内容包含指定的子字符串.我有一个包含字段的文档,如下所示:
name: n
tag: t
Run Code Online (Sandbox Code Playgroud)
我试过这个:
/_search -d '
{
"query": {
"match": {
"name": "n",
"tag": "t"
}
}
}
Run Code Online (Sandbox Code Playgroud)
但查询导致以下错误:
[match]查询以简化形式解析,带有直接字段名称,但包含的选项多于字段名称,可能使用'options'形式,带'query'元素?
有没有办法在elasticsearch中做到这一点?
令我感到困惑的是,我们可以允许将JTA事务与非XA数据源一起使用.链接到文档.那么XA /非XA数据源之间有什么区别?我们为什么要使用XA数据源呢?
@ org.hibernate.annotations.Type覆盖使用的默认hibernate类型:这通常不是必需的,因为Hibernate正确推断了类型
文档中有一个例子:
@Type(type="org.hibernate.test.annotations.entity.MonetaryAmountUserType")
@Columns(columns = {
@Column(name="r_amount"),
@Column(name="r_currency")
})
public MonetaryAmount getAmount() {
return amount;
}
Run Code Online (Sandbox Code Playgroud)
我不明白.我们声明@Type(type="org.hibernate.test.annotations.entity.MonetaryAmountUserType")但方法的返回值具有类型MonetaryAmount.
我期望在类型注释中声明的类型和返回值的类型应该是相同的类型.
无法解释在@Type注释中声明的类型的实际目的.为什么它与返回的类型不同?
我有以下bean类:
public class A{
private String field;
public String getField() {
return field;
}
private String setField(String field) {
this.field = field;
}
}
Run Code Online (Sandbox Code Playgroud)
以下课程:
public class B{
public static void main(String[] args){
A a = new A();
//do stuff
String f = //get a's field value
}
}
Run Code Online (Sandbox Code Playgroud)
如何获取特定对象的getter返回的值class A?当然,我可以调用方法,Method.invoke(Object obj, Object... args)但我不想"get"手动编写前缀.有可能避免这种情况吗?
我正在处理一些非常热的代码,我需要将one LinkedList(l1)的元素添加到另一个LinkedList(l2).
它不可能使用addAll(Collection)方法Iterator来迭代整个方法Collection.
在我看来,它应该是可以只设置最后Node的l1指向第一Node的l2.但我找不到合适的方法吗?我需要自己的LinkedList实现来实现吗?
我有一个很大的流管道,因此希望保持清洁.我有以下部分更大的管道
Integer defaultInt;
//...
Stream<Integer> ints;
ints.filter(/* predicate_goes_here */).collect(toSingletonIfEmptyCollector);
Run Code Online (Sandbox Code Playgroud)
凡toSingletonIfEmptyCollector被认为是作用于同一Collectors.toList()的确,如果它返回非emtpy列表,Collections.singletonList(defaultInt)如果Collectors.toList()返回空.
是否有更短的方法来实现它(例如,通过组合JDK中提供的标准收集器)而不是Collector从头开始实现所有方法?
问题几乎在标题中.我正在寻找比通过集合完全搜索更有效的算法.
我有两个集合:
List<Map<TypeId, Object> > col1;
List<Entity> col2;
Run Code Online (Sandbox Code Playgroud)
哪里
public enum TypeId{
PLAYER,
PARTNER,
PLATFORM,
AMOUNT
}
Run Code Online (Sandbox Code Playgroud)
和
public class Entity{
private int player_id;
private int platform_id
private BigDecimal amount;
//GET, SET
}
Run Code Online (Sandbox Code Playgroud)
该col1类型的集合List<Map<TypeId, Object> >仅包含PLAYER, PARTNER, PLATFORM TypeIds.
我需要写一个方法:
public List<Map<TypeId, Object> > merge(List<Map<TypeId, Object> > col1, List<Entity> col2){
//Impl
}
Run Code Online (Sandbox Code Playgroud)
这是会产生List<Map<TypeId, Object> >各个入口entry地图包含其他键值(AMOUNT, AMOUNT's value) 哪里AMOUNT's value是价值amount的实例的领域e的Entity,如果e.player_id = …
与该问题有关.
我知道通配符捕获.例如,以下内容可用于反转列表:
public static void reverse(List<?> list) { rev(list); } //capturing the wildcard
private static <T> void rev(List<T> list) {
List<T> tmp = new ArrayList<T>(list);
for (int i = 0; i < list.size(); i++) {
list.set(i, tmp.get(list.size()-i-1));
}
}
Run Code Online (Sandbox Code Playgroud)
现在我正在尝试为这种情况编写相同的东西:
private int compare (Comparable<?> upper, Comparable<?> lower){
return comp(upper, lower); //The method comp(Comparable<T>, Comparable<T>) is not applicable for the arguments (Comparable<capture#5-of ?>, Comparable<capture#6-of ?>)
}
private <T> int comp(Comparable<T> upper, Comparable<T> lower){
return upper.compareTo((T) lower);
}
Run Code Online (Sandbox Code Playgroud)
我希望它编译得很好.是否有可能捕获具有两个或更多参数的方法的wildacrds?
我有以下几点:
LinkedList<Integer> ints = new LinkedList();
//fill it with some ints
Stream<Integer> stream = ints.stream();
//process the stream in some way
Run Code Online (Sandbox Code Playgroud)
我的问题是,是否可以保证流的处理顺序与底层相同LinkedList?我阅读了文档,但没有关于订购的任何信息。
就我而言,保留订单至关重要。
java ×8
collections ×2
java-8 ×2
java-stream ×2
c++ ×1
collectors ×1
datasource ×1
generics ×1
getter ×1
hibernate ×1
iterator ×1
jboss ×1
jta ×1
linked-list ×1
methods ×1
nosql ×1
stl ×1
vector ×1
wildcard ×1
xa ×1