laravel - 带有静态字段值的Elasticsearch multi_query

标签 laravel elasticsearch

我已经遵循this tutorial来让Elasticsearch与Laravel 6一起工作。一切都很好,但是我需要对查询进行一些更改。我需要对此进行更改:

private function searchOnElasticsearch(string $query = '', int $fooId = 3): array
    {
        $model = new Customer;

        $items = $this->elasticsearch->search([
            'index' => $model->getSearchIndex(),
            'type' => $model->getSearchType(),
            'body' => [
                'query' => [
                    'multi_match' => [
                        'type' => 'best_fields',
                        'fields' => ['FirstName^5', 'Surname^5'],
                        'query' => $query,
                        // I need to include this:
                        // fields ['foo_id' => $fooId]
                    ],
                ],
            ],
        ]);

        return $items;
    }

本质上,这基于query查询整个模型。我不想要那个。用户只能基于列的值返回数据。假设该模型称为Customers。在客户表上,一个名为foo_id的字段。我需要类似的搜索:

Customer::query()
  ->whereRaw("UPPER(field) LIKE '%". strtoupper($query)."%' AND foo_id =" . 3)

如何在multi_match中包含静态字段值?我看过the docs,但似乎没有任何作用?

最佳答案

如果有人正在寻找类似的答案:

/** Optional to limit number of results returned:
 * "from" => 0,
 * "size" => 5,
 */
"query" => [
        "bool" => [
            "must" => [
                ["match" => ["foo_id" => 3]], // static value
                [
                    "multi_match" => [
                        "query" => $query,
                        "type" => "cross_fields",
                        "operator" => "or",
                        "fields" => [
                            "FirstName",
                            "Surname",
                            // .. other fields
                        ],
                        "minimum_should_match" => "2",
                    ]
                ],
            ]
        ]
    ]
],

关于laravel - 带有静态字段值的Elasticsearch multi_query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59466955/

相关文章:

php - laravel 的 nginx 配置

elasticsearch - Kibana Maps:结果仅限于前10000个文档

elasticsearch - ElasticSearch聚合+在非数值字段5.3上排序

docker - 具有持久卷的 kube 上的 Elasticsearch

laravel - 如何更改 spatie 媒体库中的图像目录?

mysql - 违反完整性约束 : 1452 Cannot add or update a child row: a foreign key constraint fails (Laravel Application)

php - 如何获取 Laravel 5.1 中间件中的路由

javascript - 如何将 Hotjar 代码插入 Laravel 项目?

elasticsearch - 将 Kafka 主题标题显示为 Kibana 中的字段,logstash add_field?

solr - elasticsearch ngram结果错误