2016-10-16 2 views
1

내 질문에 간단합니다. 검색 쿼리에 @를 사용할 수 없습니다. 마지막으로 백 슬래시를 사용하여 특수 문자를 이스케이프 처리 할 수 ​​있음을 발견했습니다.elasticsearch 쿼리에서 이스케이프 특수 문자

GET index/_search 
{ 
    "size": 20, 
    "query": { 
    "query_string": { 
     "query": "\@as", 
     "analyzer": "keyword" 
    } 
    } 
} 

하지만 그렇게하려고하면 다음 오류가 발생합니다. Unrecognized character escape '@' (code 64)\n at. 내가 @ 기호없이하려고 할 때 어느

  • 로 놓친으로 그리고 난

    1. 처럼 @ 기호가없는 결과를 얻었다. GUI
    2. 마치 등등. 어느 하나가 내 기대에 따라 이전 쿼리를 실행할 수있는 방법을 제안 할 수 있습니까? 탈출 할 필요가 없기 때문에

    나는

    • Elasticsearch 2.4.1
    • 우분투 14.04
    • 키바 당신은 오류가 4.6.1
  • 답변

    0

    을 사용하고있는 ' @' 캐릭터.
    "query": "@as"이 작동해야합니다.
    필드를 not_analyzed (또는 keyword 분석기가 없음)으로 표시하지 않으면 매핑을 점검해야합니다. 표준 분석기는 문서를 색인 할 때 '@'와 같은 문자를 제거합니다.
    UPDATE는
    query_string은 기본적으로 _all 필드를 사용, 그래서 당신은이 예와 유사한 방식으로이 필드를 구성 할 수 있습니다

    PUT index 
    { 
        "mappings":{ 
         "book":{ 
         "_all":{ 
          "type":"string", 
          "index":"analyzed", 
          "analyzer":"whitespace" 
         }, 
         "properties":{ 
          "name":{ 
           "type":"string", 
           "index":"not_analyzed" 
          } 
         } 
         } 
        } 
    } 
    
    PUT /index/book/1 
    { 
    "name" : "@foo bar" 
    } 
    
    GET index/_search 
    { 
        "size": 20, 
        "query": { 
        "query_string": { 
         "query": "@foo", 
         "analyzer": "keyword" 
        } 
        } 
    } 
    
    +0

    내가 전혀 맵핑을 작성하지 않았다. 값을 그대로 저장합니다. 그리고 나는 키바나에서 그 들판이 색인되어지고 분석된다는 것을 알 수있다. 따라서 표준 분석기를 사용하고 캐릭터를 제거하면 내 결과를 얻기 위해 지금해야 할 일이 있습니다. – Tamizharasan

    +0

    특수 문자로 검색 할 필요가있는 경우 매핑을 변경해야합니다 –

    +0

    내 시나리오에 맞는 매핑 유형은 무엇입니까? 나는 새로운 사람들이기 때문에 대답을 자세히 설명해주십시오. – Tamizharasan

    관련 문제