簡體   English   中英

Elasticsearch搜索結果過濾

[英]Elasticsearch search results filtering

我是Elasticsearch的新手,並且正在使用REST API for PHP來處理返回的數據。 我正在使用以下代碼來檢索數據。

$params = [
        'index' => 'my_search',
        'type' => 'mytype',
        'from' => 0,
        'size' => 10,
        'body' => [
            'query' => [
                'bool' => [
                    'must' => [
                        [ 'match' => [ 'validated' => true ] ],
                        [ 'match' => [ 'image' => true ] ]
                    ]
                ]
            ],
            'sort' => [
                'created_at' => [ 'order' => 'asc']
            ]
        ]
    ];

上面的代碼返回與“ validated => true”和“ image => true”完全匹配的數據。

此外,我想添加開放文本搜索,就像我們使用/ _search /?q = Apple macbook一樣。 我嘗試使用match,multi_match,query_string選項,但無法成功。

因此,我想從ES中檢索具有“ validated => true”,“ image => true”並與文本“ Apple macbook”匹配的結果。

提前致謝。

您可以嘗試QUERY_STRINGsimple_query_string

$params = [
    'index' => 'my_search',
    'type' => 'mytype',
    'from' => 0,
    'size' => 10,
    'body' => [
        'query' => [
            'bool' => [
                'must' => [
                    [ 'match' => [ 'validated' => true ] ],
                    [ 'match' => [ 'image' => true ] ],
                    [ 'query_string' => [ 'query' => 'Apple macbook' ] ]
                ]
            ]
        ],
        'sort' => [
            'created_at' => [ 'order' => 'asc']
        ]
    ]
    ];



$params = [
    'index' => 'my_search',
    'type' => 'mytype',
    'from' => 0,
    'size' => 10,
    'body' => [
        'query' => [
            'bool' => [
                'must' => [
                    [ 'match' => [ 'validated' => true ] ],
                    [ 'match' => [ 'image' => true ] ],
                    [ 'simple_query_string' => [ 'query' => 'Apple macbook' ] ]
                ]
            ]
        ],
        'sort' => [
            'created_at' => [ 'order' => 'asc']
        ]
    ]
    ];

您也可以通過為索引啟用all_field映射來做到這一點,也可以遵循以下URL https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-all-field.html和然后使用以下ES查詢:

$params = [
        'index' => 'my_search',
        'type' => 'mytype',
        'from' => 0,
        'size' => 10,
        'body' => [
            'query' => [
                'bool' => [
                    'must' => [
                        [ 'match' => [ '_all' => 'Apple macbook' ] ],
                        [ 'match' => [ 'validated' => true ] ],
                        [ 'match' => [ 'image' => true ] ]
                    ]
                ]
            ],
            'sort' => [
                'created_at' => [ 'order' => 'asc']
            ]
        ]
    ];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM