Php 动态弹性搜索查询
我刚刚开始使用elasticsearch,我不确定您如何使用动态搜索查询。目前,我正在使用类似以下内容:Php 动态弹性搜索查询,php,elasticsearch,Php,elasticsearch,我刚刚开始使用elasticsearch,我不确定您如何使用动态搜索查询。目前,我正在使用类似以下内容: $params['body'] = ' { "query": { "multi_match": { "query": "' . $terms . '", "fields": [ "title^1",
$params['body'] = '
{
"query": {
"multi_match": {
"query": "' . $terms . '",
"fields": [
"title^1",
"description"
],
"minimum_should_match": "70%"
}
},
"highlight": {
"pre_tags" : ["<b>"],
"post_tags" : ["</b>"],
"fields": {
"description": {
"fragment_size": 400
},
"title": {
"number_of_fragments": 0
}
}
}
}
}';
我只是在PHP中使用了一个简单的if(isset(),以查看术语是否存在,位置是否有一个。如果没有location$\u GET变量,我只是将其设置为null。布尔查询是查询多个查询的最佳方法之一
curl -XPOST "http://192.168.31.16:9200/appviewx/ro/_search" -d'
{
"query": {
"bool": {
"must": [
{
"term": {
"object": {
"value": "ball"
}
}
},
{
"term": {
"location": {
"value": "state"
}
}
}
]
}
}
}'
将其放入if块中
curl -XPOST. "http://192.168.31.16:9200/appviewx/ro/_search" -d'
{
"query": {
"bool": {
"must": [
{
"term": {
"object": {
"value": "ball"
}
}
}
]
}
}
}"
bool中有三种类型。必须、应该、不得
1) 应该像或条件一样工作
2) 必须像和条件一样工作
3) 不得表现得像不状态
尽可能多地使用过滤器以提高性能 谢谢你的帮助,我几乎让它工作了,我希望用户能够通过多个字段进行搜索。但是它们是可选的,如果我搜索
对象
(在您的示例中)和位置
,当前效果很好。但是我希望位置是可选的。目前,如果我没有为location提供一个值,而只为对象传递一个术语
,我将得到Elasticsearch\Common\Exceptions\BadRequest400Exception
。你认为实现这一目标的正确方法是什么?谢谢你帮我更新我的问题,这是PHP中的问题,请帮我排个队。如果位置字段为空,则表示跳过“必须”中的第二部分。否则就要全面建设。好吧?是的,我理解并将尝试实施,我不确定是否这样做。谢谢
curl -XPOST. "http://192.168.31.16:9200/appviewx/ro/_search" -d'
{
"query": {
"bool": {
"must": [
{
"term": {
"object": {
"value": "ball"
}
}
}
]
}
}