2017-09-28 3 views
1

정확한 쿼리를 작성하는 데 문제가 있습니다.탄성 검색 정규식 쿼리가 결과를 찾지 못했습니다.

"ids" : { 
    "type" : "text", 
    "fields" : { 
    "keyword" : { 
     "type" : "keyword", 
     "ignore_above" : 256 
    } 
    } 
} 

샘플 내용은 다음과 같이 수 :

10,20,30 

그것은 ID의 목록입니다 나는 다음과 같은 매핑 필드 "IDS"와 인덱스가 있습니다. 지금은 여러 가능한 ID를 가진 쿼리를 만들고 싶어하고 나는 분리 (OR)을 만들고 싶어 그래서 나는 정규 표현식 사용하기로 결정 :

{ 
    "query" : { 
     "bool" : { 
      "must" : [ 
       { 
        "query_string" : { 
         "query" : "Test" 
        } 
       }, 
       { 
        "regexp" : { 
         "ids" : { 
          "value" : "10031|20|10038", 
          "boost" : 1 
         } 
        } 
       } 
      ] 
     } 
    }, 
    "size" : 10, 
    "from" : 0 
} 

쿼리가 성공적으로하지만 결과를 실행합니다. 나는 3 가지 결과를 기대했다.

+0

전체 문자열과 일치해야하는 것이 있습니다. 그 쉼표로 구분 된 값이 단일 문자열이라면'(10031 | 20 | 10038) (, (10031 | 20 | 10038)) *'과 같은 것을 사용할 수 있습니다. –

답변

1

10031 또는 20 또는 10038을 얻으려면 괄호를 추가해야합니다. 변경 "10031 | 20 | 10038"=> "(10031 | 20 | 10038)"

관련 문제