php - Elasticsearch 或者匹配查询

标签 php elasticsearch

我正在尝试编写查询以在名为 category1category2 的两列中搜索产品。我正在使用 Elasticsearch php 客户端并尝试使用 match should 查询,但是由于子字符串匹配,这给了我错误的结果。

但我正在寻找与两列上的 OR 操作完全匹配的内容。我是新手,请指导我。

    $params['index'] = 'furnit';
    $params['type']  = 'products';
    $params['body']['query']['bool']['should'] = array(
        array('match' => array('category1' => $category->name)),
        array('match' => array('category2' => $category->name)),
    );

    $results = $this->elasticsearch->search($params);

最佳答案

如果您不进行搜索,那么在这种情况下使用 bool 查询并不是在 elasticsearch 中执行此操作的正确方法。当您搜索某些内容时会使用查询,搜索关键字的相关性和匹配文档的分数很重要。

这里可以应用elasticsearch的bool filter来过滤出想要的结果。使用带有查询的过滤器(过滤查询)是正确的方法,因为它排除了所有不匹配的文档,然后您可以使用匹配查询来搜索所需的文档。

这是一个 bool 过滤器的例子

{
    "from": 0,
    "size": 50,
    "sort": [
        {
            "name" : {
                "order": "asc" 
            }
        }
    ],
    "query": {
        "filtered": {
            "query": {
                "match_all" : {} 
            },
            "filter": {
                "bool": { 
                    "should": [
                        {
                            "term": {
                                "category1" : "category1"  
                            }
                        },
                        {
                            "term": {
                                "category2" : "category2"
                            }
                        }
                    ]
                }
            }
        }
    }
}

您也可以引用文档 ( https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-filter.html )

关于php - Elasticsearch 或者匹配查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30691082/

相关文章:

apache-spark - 从Spark Streaming Job写入多个ES接收器

elasticsearch - ElasticSearch:使用单个查询在单个字段上查询列表中的每个元素

elasticsearch - Elasticsearch。获取特定索引字段中的值计数

elasticsearch - 选择配置文件启动弹性集群

php - 从字符串中提取启发式(模糊)日期?

php - 如何在单个 HTML/PHP 文件中嵌入图像?

javascript - 表单的 Jquery 表单验证

php - 1452 无法添加或更新子行 : a foreign key constraint fails

elasticsearch - 当数据架构可能随时间变化时,以最佳方式插入弹性

javascript - jquery 中的 php 数组循环 : alert [ object object]