2016-11-13 1 views
2

나는 ELK에 초보자입니다. 필드에 단어가 나오는 순서에 따라 문서를 검색하고 싶습니다. 예를 들어,키 바나 정규 표현식 검색

DOC1에서

, my_field : "MY FOO WORD BAR의 예"doc2에서
, my_field : "MY BAR WORD FOO 예는"

는 "FOO"나는이 문서에 대한 키바에서 조회하고자하는

입니다 "BAR"다음에 반대가 아닙니다. 그래서, 나는 doc1이 아니라 doc2에 반환하고 싶습니다. 나는 Kibana 검색에서 아래 쿼리를 사용해 보았습니다. 그러나 작동하지 않습니다. 이 쿼리는 검색 결과를 생성하지 않습니다. 나는 문제가 해결되지해야 알게 불구하고

my_field.raw:/.*FOO.*BAR.*/ 

또한, 분석 필드 (단지 my_field)을 시도했다. 물론 그 결과도 전혀 나오지 않았습니다.

이 정규식 검색을 도와주세요. 해당 쿼리에 대해 일치하는 결과가 표시되지 않는 이유는 무엇입니까?

답변

1

나는 그 정규식 쿼리가 작동하지 않을 것이라고 확신하지만 Kibana가 here과 같이 문서화 된 Elasticsearch의 쿼리 문자열 쿼리를 사용한다고 믿어 의심치 않습니다. (링크에 문서화되어 있음) 검색을 수행하여 가능합니다. 큰 따옴표로 묶고 단어 "foo"다음에 "bar"를 찾습니다. 분석 된 필드 (my_field)에서이 작업을 수행하면 각 단어를 토큰 화하여 빠른 검색을 수행 할 수 있으므로이 방법이 더 효과적입니다. 그래서 당신은 것 키바에서 검색 :

my_field : "FOO BAR"

업데이트 :이 (아마도 하위 호환성 이유로) 키바의 성가신 특질이 같은

보인다. 어쨌든 분석되지 않은 필드를 검색하고 있기 때문에 기본적으로 Kibana는 검색을 소문자로 처리하므로 분석되지 않은 대문자 "FOO"와 일치하지 않습니다. 키 박스 고급 설정에서 here으로, 특히 구성 옵션 "lowercase_expanded_terms"를 false로 설정하여이를 구성 할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 그 뿐만이 아닙니다. 나는 "FOO"와 "BAR"이 다른 단어들로 구분 되더라도 모든 문서들을 필요로 할 것입니다.
예 : ** 일치 ** doc1, my_field : "내 FOO 단어 모음 예"
** 일치하지 않음 ** doc2, my_field : "MY BAR WORD FOO EXAMPLE" –

+0

그래서 정규식이 필요하고 구문 검색이 필요하지 않습니다. –

+0

좋아요, 왜 이런 일이 일어 났는지 알아 냈습니다. (기바 나의 괴상한 변태) 답변을 업데이트했습니다. – RyanR