作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
谁能解释 QueryContainerDescriptor、QueryContainer 和 QueryBase 之间有什么区别?
如何将查询(或 QueryBase)分配给 QueryContainer?
在下面的代码中,我可以将相同的 TermQuery 分配给 QueryBase 和 QueryContainer 对象:
QueryBase bq = new TermQuery
{
Field = Field<POCO>(p => p.Title),
Value = "my_title"
};
QueryContainer tq = new TermQuery
{
Field = Field<POCO>(p => p.Title),
Value = "my_title"
};
QueryContainer qcd = new QueryContainerDescriptor<POCO>().
Term(r => r.Field(f => f.Title).Value("my_title"));
最佳答案
QueryBase
是所有具体查询实现的基本类型 QueryContainer
是查询的容器。它用于需要查询的地方。 QueryContainerDescriptor<T>
是用于构建 QueryContainer
的类型使用构建器/流利的界面模式。 *Descriptor
NEST 中的类型是 Fluent API 语法的构建器。使用您喜欢的任何语法,或混合搭配您认为合适的 :)
QueryContainer
, 为什么不直接使用
QueryBase
?好吧,在 JSON 表示中,查询 JSON 对象是针对查询名称作为包含 JSON 对象的外部属性的键控,即
{
"query": { // <-- start of outer containing JSON object
"term": { // <-- start of JSON query object
"field": {
"value": "value"
}
}
}
}
QueryBase
将被序列化为查询 JSON 对象和
QueryContainer
将是外部包含 JSON 对象。为了更容易编写查询,
QueryBase
有隐式转换。至
QueryContainer
,所以通常你只需要实例化一个派生的
QueryBase
实现并将其分配给
QueryContainer
类型的属性
var client = new ElasticClient();
var termQuery = new TermQuery
{
Field = "field",
Value = "value"
};
var searchRequest = new SearchRequest<MyDocument>
{
Query = termQuery // <-- Query property is of type QueryContainer
};
var searchResponse = client.Search<MyDocument>(searchRequest);
QueryContainerDescriptor<T>
,您通常不需要在客户端调用之外实例化实例,因为实例将在调用中实例化。这是 Fluent API 的相同请求
client.Search<MyDocument>(s => s
.Query(q => q
.Term("field", "value")
)
);
关于elasticsearch - QueryContainerDescriptor vs QueryContainer vs QueryBase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50653191/
嗨,我可以用 DateRangeQuery 数组填充 QueryContainer,如下所示 if (!string.IsNullOrEmpty((item.marriage_date
谁能解释 QueryContainerDescriptor、QueryContainer 和 QueryBase 之间有什么区别? 如何将查询(或 QueryBase)分配给 QueryContain
我是一名优秀的程序员,十分优秀!