弹性搜索 - 排序应该和必须

时间:2017-07-18 05:35:56

标签: elasticsearch

我有这个问题,我想排序2匹配,我的代码现在看起来像这样(在php数组中)

$data = [
    'query' => [
        'bool' => [
            'must' => [
                'multi_match' => [
                    'query' => $q,
                    'fields' => ['Fulltext'],
                    'type' => 'cross_fields',
                    'operator' => 'and'
                ]
            ],
            'should' => [
                'match' => [
                    'Title' => $q,
                ]
            ]
        ]
    ],
    'aggregations' => [
        'categorys' => [
            'terms' => [
                'field' => 'Categorys.value',
                'size' => $category_size
            ]
        ]
    ],
    'size' => $product_size,
    'sort' => [
        'Popular' => [
            'order' => 'desc'
        ]
    ]
];

这种问题我想用#34; Popular"但是,它不是第一次匹配"应该"然后在"必须"所以我的问题是。

如何在第一个匹配点开始排序,然后根据热门字段对secound匹配点进行排序?

问题是我想在prouct中搜索Title中的查询匹配高于importtext然后在Fulltext字段中。

所以,如果我根据标题得到10个resualt并且分数更高然后是基于Fulltext的下一个10 resualt,但是我们有3个来自Title的reusalt和来自Fulltext的2个,其中Probular是gretnder然后是0然后这个匹配关闭是&# 39; en和排序方式(_score,Popular)如果Popular更好,那么零其他排序只是基于(_score)

能让身体帮助我解决这个问题吗?

0 个答案:

没有答案