Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

Elasticsearch development case

1.260 Aufrufe

Veröffentlicht am

Elasticsearch development case

Veröffentlicht in: Daten & Analysen
  • Sex in your area is here: www.bit.ly/sexinarea
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier
  • Dating for everyone is here: www.bit.ly/2AJerkH
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier
  • Sex in your area for one night is there tinyurl.com/hotsexinarea Copy and paste link in your browser to visit a site)
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier
  • Girls for sex are waiting for you https://bit.ly/2TQ8UAY
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier
  • Meetings for sex in your area are there: https://bit.ly/2TQ8UAY
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier

Elasticsearch development case

  1. 1. 2018. 4 (기준) 최일규 (ilkyu.choi@gmail.com) Elasticsearch 검색개발
  2. 2. Lucene Elasticsearch Lucene은 확장 가능한 고성능 정보검색(IR, Information Retrieval) 라이브러리이다. Elasticsearch는 확장성이 뛰어난 Apache Lucene 프로젝 트에 기반을 둔 오픈소스 풀텍스트 검색 및 분석엔진입니다. Elasticsearch 란? - JSON document - RESTful APIs - Distributed - Multi-tenancy - Near Real Time
  3. 3. 속도1 2 3 랭킹 자연어 검색 검색엔진 필요성
  4. 4. 데이터 원본 정제 색인 평가 RDBMS OPEN-API 제휴DB 크롤링 자체생산 활용 데이터 (비)정규화 맵핑구조 데이터 클렌징 Logstash Bulk API 기타 Precision/Recall Explain Index Time Query Time 웹서비스 모바일 서비스 기타 1 2 3 4 5 검색서비스 개발과정
  5. 5. 1. Term : 분석과정을 거치고 저장된 토큰의 최소단위를 텀(Term)이라고 한다. 2. Inverted Index : * 대용량 텍스트 검색을 위해 고안된 자료구조 Term Doc 1 Doc 2 Doc 3 출현빈도 quick O O O 3 brown O 1 예) “Quick brown” 주요용어 및 개념
  6. 6. 1. 쿼리(Query)와 필터(Filter) 구분 쿼리(Query) 필터(Filter) 검색대상 전문검색(Full Text) 바이너리 구분(Y/N) 점수계산 O X 캐싱 X O 응답속도(성능) 느림 빠름 2. 쿼리와 필터 비교 • 엘라스틱서치에서 데이터를 찾고 구분하는 기능은 쿼리와 필터로 나뉨 • 쿼리와 필터는 모두 JSON형의 QueryDSL로 표현한다. • 필터는 문서의 수를 줄이는데 목표로 한다. 주요용어 및 개념
  7. 7. 1. 정확율(precision), 재현율(recall) : 정보검색을 평가하는데 이용되는 지표 > 정확율 : 검색된 정보가 얼마나 적합하고 관련있는 문서의 비율 > 재현율 : 관련있는 문서들 중 실제로 검색된 문서의 비율 예) 대학생선교회, 대학생선교회 주요용어 및 개념
  8. 8. 1. 이음 동의어 (Synonyms) 2. 연관어 단어 동의어(유의어) 초등학생 초딩, 초등생 파리바게트 빠리바게트, 파리바게뜨 콘크리트 공구리 휴대폰 휴대전화, 핸드폰 단어 연관어 문재인 100대 국정과제 빅뱅 지드래곤, 태양 이선희 히든싱어 시즌3 주요용어 및 개념
  9. 9. 1. RDBMS VS Elasticsearch RDBMS Elasticsearch Database Index Table Type (ES 7.0 deprecated) Row Document Column Field Schema Mapping SQL Query DSL RDBMS와 데이터 구조 비교
  10. 10. 1. TF (Term Frequency) - 한 문서에서 같은 검색어(term)가 많이 나타날수록 높은점수 부여 2. IDF (Inverse Document Frequency) - 해당term이 전체 Document set에 얼마나 나왔는지 측정 - 흔한 단어일수록 idf가 낮아지고 찾아보기 힘든 단어일수록 idf 높아짐 3. COORD (Coordination factor) - 검색질의가 여러 개의 term으로 이루어졌을경우 문서에서 매치되는 term 개수가 많을수록 높은점수 부여 4. lengthNorm - term이 크기가 작은 필드에서 출현할 수록 높은점수 부여 5. Query Time Boosting Scoring 계산
  11. 11. Cluster Master Node Data Node Data Node 0 3 4 2 1 3 1 4 2 0 Shard (데이터 검색단위 인스턴스) Replica (샤드의 복사본) Primary shard Replica shard 인덱스 생성 또는 삭제 노드추적, 클러스터에 할당할 샤드결정 및 클러스터 상태관리 실제 데이터가 저장되는 노드 CRUD, 검색 및 집계와 같은 데이터 관련 작업수행 Elasticsearch 아키텍처
  12. 12. Cluster Node1 Node2 0 3 2 2 1 3 0 9200 9201 9300 9301 1 9200번 부터 REST-API를 위한 HTTP통신포트 할당 9300번 부터 노드간 바인딩을 위한 포트로 할당 같은 클러스터 이름을 가지고 실행된 노드는 자동으로 바인딩 노드바인딩
  13. 13. Analyzer 1개 Tokenizer N개 TokenFilter= + CharFilter HTMLStripper Tokenizer Standard Input TokenFilter Stopwords TokenFilter Lowercase Index Terms “<p>The quick brown Fox Jumps over the Lazy dog</p>” “The quick brown Fox Jumps over the Lazy dog” [“The”, “quick”, “brown”, “Fox”, “Jumps”, “over”, “the”, “Lazy”, “dog”] [“quick”, “brown”, “Fox”, “Jumps”, “over”, “Lazy”, “dog”] [“quick”, “brown”, “fox”, “jumps”, “over”, “lazy”, “dog”] Analyzer란?
  14. 14. Standard Analyzer Built-in Analyzer Custom Analyzer Simple Analyzer Keyword Analyzer Whitespace Analyzer Pattern Analyzer 한글형태소 자동완성 (suggest) Elasticsearch Analyzer 유형
  15. 15. Settings (Dynamic | Explicit) Mappings PUT /{_index} { “settings”: { “index”: { “number_of_shards”: 5, “number_of_replicas”: 2, “analysis”: { “analyzer”: {}, “tokenizer”: {}, “char_filter”: {}, “filer”: {} } } } } PUT /{_index} { “mappings”: { “type1”: { “properties”: { “field1”: { “type”: “text” } } } } } Create Document POST /{_index}/{_type} { “field1”: “Hello Elasticsearch” } + Index생성 및 Document생성
  16. 16. 1. Term Query POST _search { "query": { "term" : { "user" : “피부" } } } 2. Match Query POST _search { "query": { “match" : { "user" : “피부 특성" } } } QueryDSL
  17. 17. 3. Filtered Query GET _search { "query": { "bool": { "must": { "match": { "text": “보닌 화장품“ } }, "filter": { "term": { “gender": “M“ } } } } } QueryDSL
  18. 18. 4. Range Query POST _search { “query”: { “range” : { “age”: { “gte”: 10, “lte”: 20 } } } } 5. Sort POST _search { “query”: { “match” : { “title”: “피부” } }, "sort": { “_score”: { “order”: “desc” } “regDate”: { “order”: “desc” } } } QueryDSL
  19. 19. 자동완성(Suggest) 사례
  20. 20. Indexing 아버지= ㅇㅏㅂㅓㅈㅣ ㅇㅂㅈ Query Prefix Query= Suggest (Prefix 방식)
  21. 21. Indexing 아버지 = ㅇ ㅇ Query Match Query= ㅇㅏ ㅇㅂ ㅇㅏㅂ ㅇㅂㅈ Suggest (Edge n-Gram 방식)
  22. 22. https://github.com/netcrazy/elasticsearch-jaso-analyzer 자동완성(Suggest) 개발사례
  23. 23. { "settings": { "analysis": { "filter": { "my_stop": { "type": "stop", "stopwords": ["and", "is", “the"] } } } } } 1. 불용어 처리 2. 동의어 처리 https://www.elastic.co/guide/en/elasticsearch/reference/current/a nalysis-synonym-tokenfilter.html 전치사, 조사, 관서, 접속사 등과 같이 주제색인어로서 의미가 없는 단어 기타
  24. 24. A사이트 A사이트 검색품질 개선사례 Case1 (1/2)
  25. 25. Query DSLSettings Mappings A사이트 검색품질 개선사례 Case1 (2/2)
  26. 26. 크롤링 수집 국내뉴스 단어별 정제작업 키워드 저장소 Daily 정제 에이전트 수행Daily 크롤러 에이전트 수행 수집 및 저장 집계(Aggregation) 쿼리 A사이트 A사이트 활용사례 Case2
  27. 27. 1. 추천시스템 MoreLikeThis 기타 활용사례 Case3 (1/2)
  28. 28. 1. MoreLikeThis QueryDSL Response 기타 활용사례 Case3 (2/2)
  29. 29. 감사합니다.

×