当前位置: 首页 > 知识库问答 >
问题:

PHP中的elasticsearch查询和cURL

黄景胜
2023-03-14
$url = "curl -s -XGET http://<my_url>:9200/idx_occurrence/Occurrence/_search -d '
{
'filtered' : {
    'query' : {
        'term' : { 'kingdom_interpreted' : 'Plantae' }
    }
}

}' ";

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_HEADER, 0);

$return=curl_exec($ch);

var_dump($return);

也许查询过滤器不正确?(我尝试了几个选项都没有成功)

错误:{“错误”:“SearchPhaseExecutionException[未能执行阶段[query],总失败;shardFailures{[AS6HqxgNRtyU9-pQKhJsXQ][IDX_Cerception][3]:SearchParseException[[IDX_Cerception][3]:From[-1],大小[-1]:解析失败[未能解析源[\n{\n筛选:{\n查询:{\n术语:{王国:Plantae}\n}\n}\n}]]];嵌套:SearchParseException[[IDX_Certion][3]:qxgnrtyu9-pqkhjsxq][idx_councement][2]:SearchParseException[[idx_councement][2]:From[-1],size[-1]:解析失败[未能解析源[\n{\n筛选:{\n查询:{\n术语:{kingdom:Plantae}\n}\n}\n}\n}]];嵌套:SearchParseException[[idx_councement][2]:from[-1],size[-1]:解析失败[没有元素[筛选]的解析器];}]”,“status”:500}

共有1个答案

百里景山
2023-03-14

我一直在使用Elastica PHP库进行elasticsearch交互:

https://github.com/ruflin/elastica

它有一个非常短的学习曲线。这里有一个例子:

$client = new Elastica_Client();
$index = $client->getIndex('idx_occurrence');
$index->getType('Occurrence');

$query_string = new Elastica_Query_QueryString('Plantae');
$query_string->setFields(array('kingdom_interpreted'));    
$query = new Elastica_Query($query_string);

$index->refresh();
$searchResults = $index->search($query);
 类似资料:
  • 问题内容: 我是Elasticsearch的新手。我正在尝试编写一个查询,该查询将按字段分组并计算总和。在SQL中,我的查询如下所示: 我有在ES中看起来像这样的数据: 我想本质上在ES中运行与SQL中相同的查询,这样我的结果将类似于(当然是json): 问题答案: 在elasticsearch中,您可以通过使用术语stats facet 实现此目的:

  • 我试图将查询与exclude查询一起使用,以便它匹配除要排除的术语之外的所有术语。我在一个基本的URI查询中找到了它,但不是常规的JSON查询。如何将此URI转换为JSON类型查询? 其中是不匹配的标记列表。 这是我目前所掌握的: 但是,当我这样做时,仍然包含在结果中。如何排除?

  • 问题内容: 我找不到有关如何使用PHP(elasticsearch-php)中的完成建议器查询Elasticsearch的有效示例。 通过CURL查询,例如 可以,所以唯一的问题是PHP中的查询部分。 如何使用API​​通过完成建议器查询Elasticsearch? 问题答案: PHP ES客户端具有一种称为的方法,您可以将其用于该目的:

  • 我正在使用elasticsearch从json文件中过滤和搜索,我是这项技术的新手。所以我有点困惑如何在ElasticSearch中编写查询。 这是oracle查询。如何在ElasticSearch中编写此查询?我使用的是elasticsearch版本6.8.13

  • 问题内容: 我想使用ES进行图书搜索。因此,我决定将作者姓名和标题(作为嵌套文档)放入索引,如下所示: 我不明白的是:如何构造搜索查询,以便在搜索“一二”时仅找到第二本书,而在搜索“二三”时什么也找不到,而在搜索“一”时所有图书呢? 问题答案: 也许是这样的? 该查询基本上说一个文件必须有and 。您可以轻松地重新配置该查询。例如,如果您只想搜索作者,请删除嵌套部分。如果您想要另一本书,请更改嵌套

  • 我有三个字段-一个是整数类型(field1),两个是十进制类型(field2,field3)。我希望能够按所有字段进行查询。在我的情况下,这些单独的查询非常有效: 这个查询运行良好: 但是,如果我将它们结合起来: ]; 我得到一个错误: 未捕获的异常'Elasticsearch\Common\Exceptions\BadRequest est400Exception'...[匹配]格式错误的查询,