【问题标题】:How to do prefix query in Elasticsearch php?如何在 Elasticsearch php 中进行前缀查询?
【发布时间】:2015-10-23 16:17:50
【问题描述】:
我想在 PHP 中使用以下 JSON 查询:
{
"match_phrase" : {
"message" : {
"query" : "this is a test",
"analyzer" : "my_analyzer"
}
}
}
现在我有了 PHP 代码:
$params['body']['query']['match_phrase'] = array(
"name" => $query
);
$this->result = $this->client->search($params);
如何根据elasticsearch php转换PHP数组查询中的JSON查询?
【问题讨论】:
标签:
php
elasticsearch-plugin
elasticsearch
【解决方案1】:
一种方法是这样的:
$params['body']['query']['match_phrase'] = array(
"message" => array(
"query" => $query,
"analyzer" => "my_analyzer"
)
);
$this->result = $this->client->search($params);
使用 Elasticsearch 时可能更好的另一种方法是使用 json_decode 函数。这样,您可以使用 JSON 轻松编写查询
无需通过关联数组构造它即可查询 DSL。
$json = '{
"match_phrase" : {
"message" : {
"query" : "' . $query . '",
"analyzer" : "my_analyzer"
}
}
}';
$params['body']['query'] = json_decode($json);
$this->result = $this->client->search($params);