elasticsearch kullanarak en çok arama sorgusu oluşturmak istiyorum.Elasticsearch'te global sorgu nasıl yazılır?
elasticsearch tablosundan category_name
, brand_name
ve title
eşleştirmelerini istiyorum. Maç, ifade veya koşul veya koşul ile olmalıdır.
Benim sorgusu:
$query = [
"bool" => [
"must" => [
["match" => ["is_published" => 1]],
[
"multi_match" => [
"query" => $searchKey,
"fields" => ["category_name", "brand_name", "title"]
]
],
[
'nested' => [
'path' => 'category_with_in_title.parent_cat',
'query' => [
'bool' => [
'must' => [
['match' => [
'category_with_in_title.parent_cat.status' => 1,
]],
],
],
],
],
],
[
'nested' => [
'path' => 'brand',
'query' => [
'bool' => [
'must' => [
'match' => [
'brand.approved_status' => 1,
],
],
],
],
],
],
[
'nested' => [
'path' => 'default_product_low_price_with_seller.seller_detail',
'query' => [
'bool' => [
'must' => [
'match' => [
'default_product_low_price_with_seller.seller_detail.approve_status' => 1,
],
],
],
],
],
],
[
'nested' => [
'path' => 'default_product_low_price_with_seller',
'query' => [
'bool' => [
'must' => [
'match' => [
'default_product_low_price_with_seller.status' => 1,
],
],
],
],
],
],
],
],
];
Bunun için multi_match
kullanmak ama nasıl bu sorguda pharse kullanılır? Arama yapmak için bütün kelimeyi yazmalıyım. Örneğin
:
Kimin category_name = Tops
istediğim i yazarsanız neden "başında" ya da "top" ya da "hiç" kaydını aramak istiyorsunuz. Ama şimdi tam kelimeyi "Tops" yazmalıyım. o öneki sağlayan önceden
Teşekkür ...
Bu yaklaşımın bir sınırlaması vardır. Varsayılan max_expansions değeri 50'dir ve bu, sorgu yanıt sürenizi etkileyebilir. Referans: https://www.elastic.co/guide/en/elasticsearch/guide/current/_query_time_search_as_you_type.html –
Teşekkürler efendim, ama bu işe yaramıyor hiçbir kayıt almıyorum –