2013-06-17 4 views
3

상태 약자를 저장하는 필드를 검색하려고 할 때 문제가 있습니다. ElasticSearch에서 필드 내에서 "OR"단어를 검색하는 방법은 무엇입니까?

나는 다음 쿼리가 있습니다

{ 
    "query": { 
     "query_string": { 
       "query": "field_state:'OR' AND type:incentive" 
       } 
       } 
} 

을 그리고 내가 오리건 주 (OR)에 대한 결과를 얻을 수하려고 할 때 문제가 온다. 다른 모든 주에서는 작동하지만이 특별한 경우에는 Elasticsearch가 "OR"을 조건으로 사용하여 모두를 검색하는 것과 같습니다.

이 작업을 할 수있는 방법이 있습니까?, 용어, 접두사 필터 및 모든 동일한 결과를 사용해보십시오.

+0

'AND' 'query_string' 질의 대신에 2 개의 조건을 가진 질의. –

+1

이 필드에는 어떤 분석기를 사용하고 있습니까? 이 값이 정지 단어로 취급되지 않는 것이 확실합니까? –

+0

나는 어떤 분석기도 사용하고 있지 않으며 나는 또한 어떤 정지 단어도 정의하지 않았다. 이것이 기본 중지 단어의 일부인지 알 수있는 방법이 있습니까 ?? – Poncho1984

답변

0

기본 분석기를 Standard Analyzer ("또는"과 같은 영어 중지 단어 필터링을 비롯한 여러 가지 일을합니다.)에서 바꾸고 싶은 것 같습니다. 여기에 Simple Analyzer (만 lowercases하는)를 사용하여 예입니다 :

curl -XPUT "http://MYHOST/MYINDEX/MYTYPE/_mapping" -d '{ 
    "MYTYPE": { 
    "properties": { 
     "field_state": { 
     "analyzer": "simple", 
     "type": "string" 
     } 
    } 
    } 
}' 

: 당신이 field_state에 대한 분석을 변경하려는 경우에는

curl -XPOST "http://MYHOST/MYINDEX/_close" 
curl -XPUT "http://MYHOST/MYINDEX/_settings" -d '{ 
    "analysis": { 
    "analyzer": { 
     "default": { 
     "type": "simple" 
     } 
    } 
    } 
}' 
curl -XPOST "http://MYHOST/MYINDEX/_open" 

가 직접 해당 필드에 대한 매핑을 업데이트 할 수 있습니다 간단한 분석기를 사용하는 경우 'OR'대신 '또는'을 검색해야 할 수도 있습니다.

curl -XPOST "http://MYHOST/MYINDEX/MYTYPE/_search" -d '{ 
    "query": { 
    "query_string": { 
     "query": "field_state:'or' AND type:incentive" 
    } 
    } 
}' 
+0

기본적으로 [Stop Token Filter] (표준 분석기에서 사용됨) (http://www.elasticsearch.org/guide/reference/index-modules/analysis/stop-tokenfilter/)는 하드 코드 된 중지 목록을 사용합니다 다음을 포함하는 단어 : "a", "an", "and", "as", "at", "be", "but", "for", "if" ","에 ","에 ","있다 ","그것 ","아니다 ","없다 ","의 ","또는 ","그러한 ","그 "," "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" –

관련 문제