2016-10-11 4 views
0

는 다음 쿼리는 ""를 ""모양 "모든 단어있는 모든 문서를 발견하고이 :ElasticSearch 쿼리 문자열 쿼리 default_operator

"query": { 
      "query_string": { 
       "query": "look for this", 
       "default_operator":"AND" 
      } 
     } 

이 하나가 그 중 하나를 가지고있는 문서를 발견하는 동안 세 단어 :

"query": { 
      "query_string": { 
       "query": "look for this", 
       "default_operator":"OR" 
      } 
     } 

내 질문은 그것이 구글 스타일 검색을 수행 있도록 첫 번째 목록 다음 그 중 하나가 문서를 조건을 모두 가지고 모든 문서 즉, 쿼리를 변경하는 방법입니다

나는 어떤 도움을 주시면 감사하겠습니다.

답변

1

기본적으로 탄성 검색은 모든 용어가있는 문서에서 높은 점수를줍니다. 그것을 보려면 explain api을 사용할 수 있습니다. 당신이 정말로 문서 모든 조건이 존재하는 아주 높은 점수를주고 싶은 경우

, 당신은 사용할 수 bool query

{ 
    "query": { 
    "bool": { 
     "should": [ 
     { 
      "query_string": { 
      "default_field": "title", 
      "query": "look for this", 
      "default_operator": "AND" 
      } 
     }, 
     { 
      "query_string": { 
      "default_field": "title", 
      "query": "look for this" 
      } 
     } 
     ] 
    } 
    } 
} 

EDIT 1

당신은 높은 부스트를 제공하기 위해 fuction score query를 사용할 수 있습니다 원하는 결과. 다음 검색어를 사용해보십시오

{ 
    "query": { 
    "function_score": { 
     "query": { 
     "bool": { 
      "should": [ 
      { 
       "query_string": { 
       "fields": [ 
        "title" 
       ], 
       "query": "look for this", 
       "default_operator": "AND" 
       } 
      }, 
      { 
       "query_string": { 
       "query": "look for this", 
       "fields": [ 
        "title" 
       ] 
       } 
      } 
      ] 
     } 
     }, 
     "functions": [ 
     { 
      "filter": { 
      "query": { 
       "query_string": { 
       "fields": [ 
        "title" 
       ], 
       "query": "look for this", 
       "default_operator": "AND" 
       } 
      } 
      }, 
      "weight": 10 
     } 
     ] 
    } 
    } 
} 
+0

나는 이것을 시도했지만 맨 위에 모든 단어가있는 문서를 가져 오지 않습니다. 어떻게해야합니까? – na1368

+0

하나 더 접근법을 추가했습니다. 원하는 결과를 얻을 수 없다면 100으로 체중을 변경해보십시오. ES가 현재 사용하고있는 모든 용어와 함께 문서에 높은 점수를 부여하지 않는 이유는 무엇입니까? 당신은 또한 '_all'필드에 queyring하지만 난 그게 문제가 될 수있는 방법을 안다. – ChintanShah25