我的问题很简单。我想在Elastica的一个查询中组合两个过滤器,一个filter_bool和一个filter_range。该代码是
public function getAdvancedTweetsEs($keyword, $location, $datepicker, $datepicker1, $offset)
{
$elasticaClient = new Elastica_Client();
// Load index
$elasticaIndex = $elasticaClient->getIndex('mongoindex3');
// Define a Query. We want a string query.
$elasticaQueryString = new Elastica_Query_QueryString();
//$elasticaQueryString->setDefaultOperator('AND');
$elasticaQueryString->setQuery($keyword);
// Create the actual search object with some data.
$elasticaQuery = new Elastica_Query();
$elasticaQuery->setQuery($elasticaQueryString);
$elasticaQuery->setFrom(0);
$elasticaQuery->setLimit($offset);
//Set a filter in text
$elasticaFilterBool = new Elastica_Filter_Bool();
$filter1 = new Elastica_Filter_Term();
$filter2 = new Elastica_Filter_Term();
$filter1->setTerm('text', array(strtolower($keyword)));
$filter2->setTerm('location', array(strtolower($location)));
$elasticaFilterBool->addMust($filter1);
$elasticaFilterBool->addMust($filter2);
$elasticaQuery->setFilter($elasticaFilterBool);
$range = new Elastica_Query_Range();
$range->addField('date',
array( 'from' => $datepicker,
'to' => $datepicker1
)
);
//Search on the index.
$elasticaResultSet = $elasticaIndex->search($elasticaQuery);
$elasticaResults = $elasticaResultSet->getResults();
$results = array();
foreach ($elasticaResults as $elasticaResult)
{
$results[] = $elasticaResult->getData();
}
return $results;
}
我不能在$ elasticaQuery中将两个过滤器放在一起。请给我任何帮助!
谢谢!
为什么不将范围过滤器添加为过滤器中的另一个must
术语bool
:
$rangeFilter = new Elastica_Filter_Range();
$rangeFilter->addField('date',
array( 'from' => $datepicker,
'to' => $datepicker1
)
);
$elasticaFilterBool->addMust($rangeFilter);
$elasticaQuery->setFilter($elasticaFilterBool);
您需要在布尔过滤器中使用过滤器,而不是查询。注意我已经使用Elastica_Filter_Range
而不是您正在使用的范围查询。
另外,您知道您使用的是Elastica的过时版本,新版本使用名称空间!
我想结合两个筛选函数来选择表中的几个元素。我的代码如下所示: 中的元素必须在第一个并且在一行中。因此,如果返回3个元素,它们必须在一行中,后面是中的元素。我怎样才能做到呢?我可以组合上面的筛选功能吗?
我试图用两个不同的过滤器来配置spring security。我想要的是有一些将由一个过滤器处理的网址,和一些将由其他过滤器处理的网址。这是我想到的设置: 过滤器看起来像这样: 过滤器1 : 过滤器2 : 问题是这两个过滤器都是在一个链中为每个请求调用的。我提出的任何请求,它首先通过一个过滤器,然后通过另一个,而不是仅仅通过一个。 我该怎么解决这个问题? 提前感谢。
我有桌子: 行程:Trip_Num、Trip_Type等 用户的出差历史记录:Username、Trip_Num等 我正在用php做一个项目,需要为一个特定的用户(通过他的用户名)做一个SQL查询--需要知道用户的Trips历史表中Trip_Num的Trip_Type。 附上我的表格: 更新:我需要计算trip_type中的每个值。我的意思是我想看到“步行”-4次,“自行车”-3次,这很好?...
问题内容: 我需要的是对表的查询,该查询将返回列A和B的不同组合,以及表中每种组合发生多少次的计数。所有这些都将按A列进行排序。 如果表是: 结果将是: 任何帮助将是巨大的。 问题答案: GROUP BY是您的朋友在这里: SQLFiddle:http ://sqlfiddle.com/#!9/062b0e/5
是否可以跳过文档中的第一个记录的名称例如product_detail是集合,它有10个文件的名称苹果和10个文件的名称芒果我可以跳过前2个文件中的每一个?下面的查询跳过苹果中的前2个文档。 不要用两个查询跳过“productInfo.name”:“apple”和“productInfo.name”:“mango”的两个文档,我需要一个,有人能帮我吗?
我正在使用MongoDB,我最终得到了两个集合(无意中)。 第一次收集(样本)有1亿条记录(推文),结构如下: 第二个集合(用户)拥有来自tweet集合的3000万条独特用户记录,看起来是这样的 用户集合中的_id是来自推文集合的user.screen_name,目标是他们的状态(是否作弊用户),最后value.count是我们第一个集合(样本)集合中出现的用户数量(例如捕获的推文数量) 现在我想