2017-11-18 352 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" => [] 
     ] 
    ] 
]