我有一个产品集合,每个产品都会有:
此集合在ElasticSearch中索引。现在,当我查询类别A中所有产品的列表时,我还希望获得:
然后,我将使用这些信息构建一个过滤器,用户可以使用它来缩小结果列表(类似于许多其他电子商务网站上的过滤器,如亚马逊、Overstock、Ebay...)
我研究了facet搜索,但不确定这是否是我想要的,我希望找到一种方法来检索所有的信息,我需要与最小数量的查询可能。
当谈到亚马逊类别搜索的风格时,Facets绝对是要走的路。为了在尽可能少的查询中检索所有方面,您可以非常容易地做到这一点,只需包含更多。我使用Sense chrome扩展,因为它非常漂亮,很容易用于搜索示例。在这个例子中,我放置了一些产品文档,包括名称、价格、制造商、类别和颜色。正如您所看到的,我们已经在一个匹配的所有方面搜索了所有这些方面。您可以执行您喜欢的查询,甚至可以执行全局方面或任意数量的方面(范围、直方图等)。这实际上完全取决于您想要什么样的文档,以及数据是如何形成的。一个非常令人兴奋的部分,这是下一个大的东西聚合!您可以使用聚合进行出色的搜索。假设您有一个时间戳和一个位置,您可以在特定位置的一个时间之间的一种颜色上进行聚合。qbox.io将在未来几天发布一篇博文,介绍您可以使用aggs做的一些有趣的事情。
DELETE /test_index
PUT /test_index
PUT /test_index/product/1
{
"name":"prod1",
"price":19.95,
"manufacturer":"manu1",
"category":["cat1","cat2"],
"color":"red"
}
PUT /test_index/product/2
{
"name":"prod2",
"price":25,
"manufacturer":"manu2",
"category":["cat2","cat3"],
"color":"yellow"
}
PUT /test_index/product/3
{
"name":"prod3",
"price":4.99,
"manufacturer":"manu2",
"category":["cat1","cat2","cat3"],
"color":"yellow"
}
PUT /test_index/product/4
{
"name":"prod4",
"price":19.95,
"manufacturer":"manu3",
"category":["cat1","cat3"],
"color":"blue"
}
POST /test_index/_search
{
"query": {
"match_all": {}
},
"facets" : {
"price_stats" : {
"statistical" : {
"field" : "price"
}
},
"color_terms" : {
"terms": {
"field": "color",
"size": 10
}
},
"manufacturer_terms" : {
"terms": {
"field": "manufacturer",
"size": 10
}
},
"category_terms" : {
"terms": {
"field": "category",
"size": 10
}
}
}
}`
作为这个答案的后续(关于方法1),我想更进一步: 我想根据某些标准筛选子对象。我尝试了下面的查询,但它仍然没有筛选出孙实体下的对象。 关联类实体 类关系ParentEntity<1-OneTomany-x>ChildEntity<1-OneTomany-x>GrandChildEntity
问题内容: 我需要您的帮助,这是我的SQL查询: 这是我的结果: 现在我必须计算第一个查询的结果! 问题答案: 您可以将查询换成另一个: 参见带有演示的SQL Fiddle 为了使其工作,需要一个列别名,并且您必须为子查询本身提供一个别名。
我正在尝试查找一个查询唯一的名称列表,并排除两个查询结果之间的共同名称。例如,我想要学生A、B和C所选课程的名称,并从该列表中排除学生D和E所选的课程。在这个问题的答案的帮助下(Neo4j Cypher:从结果中排除某些节点),我尝试了这个密码代码,它是有效的,但我得到的结果是节点。我希望它是一个名称列表,而不是节点。 非常感谢。
试图从结构中获取项目列表,避免大量的for循环和if,所以我想使用 例如,lets具有以下结构: 我要创建: null List TestitemsFiltered=House1.FamilyList.Stream().FlatMap(f->f.PersonList.Stream().FlatMap(p->p.ItemList.Stream().Filter(Item->Item.Name.Equ
我看不到任何关于何时应该使用查询或过滤器或两者结合的描述。他们之间有什么区别?谁能解释一下吗?
我正在尝试输出一个显示求职者对特定工作的申请的视图。到目前为止,我只能查看所有接收到的应用程序的转储,但我无法实现查询来仅查看特定作业的应用程序。即我希望能够查看每个不同空缺职务的条目。谢谢 \\ \\