Elasticsearch 퍼지 이메일 또는 전화 일치
질문:
퍼지 일치를 어떻게 구현할 수 있나요? Elasticsearch를 사용하여 이메일 주소나 전화번호를 찾으시나요? 구체적으로, "@gmail.com"으로 끝나는 모든 이메일 또는 "136"으로 시작하는 모든 전화번호를 어떻게 일치시킬 수 있습니까?
답변:
맞춤 분석기를 활용하여 인덱싱 및 검색을 통해 이메일 및 전화 데이터에 대한 유사 항목 일치를 용이하게 할 수 있습니다.
이메일 유사 항목 일치:
다음 설정으로 분석기를 구성하세요.
인덱스 분석기: index_email_analyzer
검색 분석기: search_email_analyzer
전화번호 퍼지 일치:
다음 설정으로 분석기를 구성합니다:
인덱스 분석기: index_phone_analyzer
검색 분석기: search_phone_analyzer
색인 예:
PUT myindex { "settings": { "analysis": { "analyzer": { "email_url_analyzer": { "type": "custom", "tokenizer": "uax_url_email", "filter": [ "trim" ] }, "index_phone_analyzer": { "type": "custom", "char_filter": [ "digit_only" ], "tokenizer": "digit_edge_ngram_tokenizer", "filter": [ "trim" ] }, "search_phone_analyzer": { "type": "custom", "char_filter": [ "digit_only" ], "tokenizer": "keyword", "filter": [ "trim" ] }, "index_email_analyzer": { "type": "custom", "tokenizer": "standard", "filter": [ "lowercase", "name_ngram_filter", "trim" ] }, "search_email_analyzer": { "type": "custom", "tokenizer": "standard", "filter": [ "lowercase", "trim" ] } }, "char_filter": { "digit_only": { "type": "pattern_replace", "pattern": "\D+", "replacement": "" } }, "tokenizer": { "digit_edge_ngram_tokenizer": { "type": "edgeNGram", "min_gram": "1", "max_gram": "15", "token_chars": [ "digit" ] } }, "filter": { "name_ngram_filter": { "type": "ngram", "min_gram": "1", "max_gram": "20" } } } }, "mappings": { "your_type": { "properties": { "email": { "type": "string", "analyzer": "index_email_analyzer", "search_analyzer": "search_email_analyzer" }, "phone": { "type": "string", "analyzer": "index_phone_analyzer", "search_analyzer": "search_phone_analyzer" } } } } }
검색어:
POST myindex { "query": { "term": { "email": "@gmail.com" } } }
POST myindex { "query": { "term": { "phone": "136" } } }
Elasticsearch는 이러한 사용자 정의 분석기를 활용하여 이메일 주소와 전화번호에 대한 유사 항목 일치를 효율적으로 수행할 수 있습니다.
위 내용은 Elasticsearch 내에서 이메일 주소와 전화번호에 대한 효율적인 유사 일치를 어떻게 달성할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!