由于Elasticstack 5需要进行大量的更改和测试,我们仍在使用Nest 2.4.6。
如果重要,我们使用Visual Studio 2012,ASP.net 4.6.1,MVC 5.2.3。
现在这是我们的问题:
我们有一个QueryContainer,它根据查询要求动态填充查询。在此操作的某个时刻,我们必须克隆QueryContainer对象以使派生的QueryContainer能够进行稍微不同的查询。
现在,由于我们不知道开头所需的派生查询的数量,我们无法声明和填充所有这些查询,因此我们确实需要克隆QueryContainer。
我们已经尝试过了什么? (为了清楚地看到问题本身,而不是共享完整的功能,我给出了一个例子)
1
QueryContainer q = null; // Declared primary QueryContainer
q &= ... // Prepared primary QueryContainer
q &= ...
q &= ...
//lets say we have 3 bool queries in q
QueryContainer g = null; // Declared secondary QueryContainer
g = q; // self explanatory
g &= ... //add one more bool query to g, so g has 4 bool queries
//now q also has 4 bool queries, but we need to have it has 3 bool queries, without the one we added to g.
2
而不是:
g = q;
我们尝试了这个:
g &= q; // No luck, still the same.
我发现它是Nest 2.4.6中的一个错误,并在5.0中修复。由于Nest 5.0还需要我们目前试图避免的大量更改,因此我们无法升级到5.0。我想如果有一种解决方法或复制QueryContainer对象的方法,我们可能有机会。