2017-02-14 60 views
1

我是elasticsearch的新手,我有產品索引,其中類別作爲csv字符串存儲在一個字段中。我使用PHP客戶端,和我目前的搜索代碼看起來像在elasticsearch如何在csv字符串字段中篩選

$params = [ 
      "index" => "products", 
      "type" => "product", 
      "body" => [ 
       "size" => "5", 
       "query" => [ 
        "function_score" => [ 
         "query" => [ 
          "bool" => [ 
           "must" => [ 
            "query_string" => [ 
             "fields" => ["category", "sub_category", "website", "services_offered", "keyword", "locations", "info"], 
              "query" => $keyword."*" 
            ] 
           ], 
           "filter" => [ 
            "term"=> ["is_active"=>1] 
           ] 
          ] 
         ], 
         "functions" => [ 
             [ 
              "field_value_factor" => ["field" => "rating", "modifier" => "none", "factor" => 1] 
             ], 
             [ 
              "field_value_factor" => ["field" => "reviews","modifier" => "log1p","factor" => 2] 
             ] 
            ] 
        ] 
       ] 
      ] 
     ]; 
     $results = $this->elasticclient->search($params); 

我試圖修改filter陣列狀

"filter" => [ 
            "term"=> ["is_active"=>1], 
             "wildcard" => ["category"=>$category] 
           ] 

但我得到一個malformed query, expected [END_OBJECT] but found [FIELD_NAME]錯誤。

另外在旁邊,在PHP客戶端,我怎樣才能得到最終生成的查詢調試?

回答

0

terms過濾器不支持通配符。您可以使用regexp篩選器(Elasticsearch版本中的查詢> = 2.0)。

相關問題