2017-11-18 350 views
0

我有使用elasticsearch搜索查詢,並在某些情況下,當我搜索了boolean場,我可以看到有相反我在搜索結果的..Elasticsearch布爾結果是不正確

這是我的搜索查詢:

[ 
    "sort" => [ 
    [ 
     "_score" => "desc" 
    ] 
    ] 
    "size" => 50 
    "from" => 0 
    "terminate_after" => 100 
    "query" => [ 
    "bool" => [ 
     "must" => [ 
      [ 
      "query_string" => [ 
       "query" => "sales*" 
       "analyze_wildcard" => true 
       "default_operator" => "AND" 
       "boost" => 1 
       ] 
      ] 
      [ 
      "bool" => [ 
       "should" => [ 
       [ 
        "match" => ["gender" => 0] 
       ] 
       ] 
      ] 
     ] 
     ] 
     "must_not" => [] 
    ] 
    ] 
] 

例如,我有每頁50個結果,我看到40號我的結果有gender = 0,但其中10 gender = 1,我嘗試用term queries但正如我預料它沒有工作..我不想要任何性別的值爲1.

在elasticsearch文件我找不到任何關於我的任何問題,如果任何人有任何文檔或解決方案,讓我知道..提前

感謝

回答

0

我彈搜索陣列上的一些變化後,我試圖filter search對於我的確切值,現在它按我的預期工作。

這是我現在的代碼:

[ 
    "sort" => [ 
    [ 
     "_score" => "desc" 
    ] 
    ] 
    "size" => 50 
    "from" => 100 
    "terminate_after" => 100 
    "query" => [ 
    "bool" => [ 
     "must" => [ 
     [ 
      "query_string" => [ 
      "query" => "sales*" 
      "analyze_wildcard" => true 
      "default_operator" => "AND" 
      "boost" => 1 
      ] 
     ] 
     ] 
     "filter" => [ 
      [ 
      "bool" => [ 
       "should" => [ 
       [ 
        "term" => ["gender" => 0] 
       ] 
       ] 
      ] 
      ] 
     ] 
     "must_not" => [] 
     ] 
    ] 
]