본문 바로가기

반응형

전체 글

(441)
Elasticsearch 결과에 "_ignored" 가 나오는 이유 es 에서 검색 결과를 보다가 발견한 "_ignored" 필드 ! "_ignored": [ "description.keyword" // ? ], 이게 뭘까 query 날릴 때 분명 description 관련한 것은 아무것도 없는데 왜 _ignored 가 뜨며 description.keyword 가 왜 ignored 되었는지? Es 결과 { "took": 9, "timed_out": false, "_shards": { "total": 1, "successful": 1, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 5, "relation": "eq" }, "max_score": 89.01466, "hits": [ { "_index": "test_i..
[Nestjs, Mongoose 에러] AllExceptionFilter document must have an _id before saving Nestjs + Mongoose db 로직을 수정하면서 모델을 수정했는데 기존에 잘 되던 create 요청에 에러가 났다. AllExceptionFilter MongooseError: document must have an _id before saving 저장 전 _id 가 반드시 있어야 한다는 것 같다. 모델에 디폴트로 _id가 생성되긴 하지만 모델에 _id에 정의해주었고 @Prop() 을 붙여준 게 문제였다. @Schema({ collection: 'blabla', timestamps: true, versionKey: false, read: 'secondaryPreferred', }) export class blablaModel { @Prop()
compinit:503: no such file or directory: /usr/local/share/zsh/site-functions/_brew .zshrc 파일에서 무언가 수정 후에 아래 명령어로 적용을 해주어야하는데 계속 에러가 났다. .zshrc 수정 후 zshrc를 실행시켜주기 명령어 exec zsh or source ~/.zshrc * source ~/.zshrc 보다는 Exec zsh가 더 좋다고 한다. 그리고 나온 에러 compinit:503: no such file or directory: /usr/local/share/zsh/site-functions/_brew 저 경로를 못찾는다고 나오는데 경로따라 가보니 분명 _brew 파일이 있었다. 찾아보니 1. homebrew cleanup 해주기 brew cleanup 만 해주어도 에러가 고쳐지는 사람들이 있었고 나는 아니었다. 2. symbolic links 재설정 더 찾아보니 int..
[Http] 상태 코드 정리 http 상태 코드 정리 상태 코드 1xx (Informational) 요청이 수신되어 처리 중 2xx (Successful) 요청 정상 처리 3xx (Redirection) 요청을 완료하려면 추가 행동이 필요 4xx (Client Error) 클라이언트 오류, 잘못된 문법 등으로 서버가 요청을 수행할 수 없음 5xx (Server Error) 서버 오류, 서버가 정상 요청을 처리하지 못함 만약 모르는 상태코드 또는 미래에 새로 추가될 상태코드 (ex. 299) 가 온다면 위의 큰 범위로 생각해서 처리하면 된다. 1. 1xx (Informational) 거의 사용하지 않으므로 생략 2. 2xx (Successful) 200 : OK - 주로 get 에 대한 성공적인 결과로 주는 응답 201 : Creat..
[Elasticsearch] date format 날짜 형식 정리 Elasticsearch date foramt elasticsearch date 날짜에 사용할 수 있는 형식들 알아보기 Es에서 사용할 수 있는 형식은 Date math 표현, 이미 가지고 있는(built in formats) 규격 형식들과 커스텀 형식 이렇게 총 3가지로 나누어진다. 1. Date math expression Date Math 에 대해서는 예전에 작성한 포스팅 참고! [Elasticsearch] Data Math 개념과 계산하는 방법 Elasticsearch range queries에서 또는 datarange aggregations에서 사용되는 Date Math 알아보기 1) 기본 단위들 기본 단위들은 아래와 같다. supported units y Years M Months w Week..
[Elasticsearch] Aggregations 집계 총정리 Elasticsearch Aggregations, 집계 Elasticsearch 는 검색뿐 아니라 여러가지 연산을 할 수 있는 Aggregation 기능이 있다. Kibana에서 차트, 그래프 등으로 시각화시킬 때 사용하는 기능이 aggregation 이다. aggregations 에는 두 가지 종류가 있다. - Metrics aggregation : 숫자 또는 날짜 필드의 값으로 계산함 - Bucket aggregation : 범위나 keyword 값으로 그룹화함 그리고 확장하여 사용할 수 있는 aggregations 도 있다. - Sub-aggregation : bucket 하위 집계 - Pipeline-aggregation : metrics aggregation 결과로 다시 집계 Metrics ag..
[Elasitcsearch] Pipeline-Aggregation 개념 및 예제 Elasticsearch Aggregations, 집계 Elasticsearch 는 검색뿐 아니라 여러가지 연산을 할 수 있는 Aggregation 기능이 있다. Kibana에서 차트, 그래프 등으로 시각화시킬 때 사용하는 기능이 aggregation 이다. aggregations 에는 두 가지 종류가 있다. - Metrics aggregation : 숫자 또는 날짜 필드의 값으로 계산함 - Bucket aggregation : 범위나 keyword 값으로 그룹화함 그리고 확장하여 사용할 수 있는 aggregations 도 있다. - Sub-aggregation : bucket 하위 집계 - Pipeline-aggregation : metrics aggregation 결과로 다시 집계 이 포스팅에서는 집..
[Elasticsearch] bucket sub-aggregation 하위 집계 Elasticsearch Aggregations, 집계 Elasticsearch 는 검색뿐 아니라 여러가지 연산을 할 수 있는 Aggregation 기능이 있다. Kibana에서 차트, 그래프 등으로 시각화시킬 때 사용하는 기능이 aggregation 이다. aggregations 에는 두 가지 종류가 있다. - Metrics aggregation : 숫자 또는 날짜 필드의 값으로 계산함 - Bucket aggregation : 범위나 keyword 값으로 그룹화함 그리고 확장하여 사용할 수 있는 aggregations 도 있다. - Sub-aggregation : bucket 하위 집계 - Pipeline-aggregation : metrics aggregation 결과로 다시 집계 이 포스팅에서는 S..
[Elasticsearch] Bucket Aggregations 버킷 집계 정리 Elasticsearch Aggregations, 집계 Elasticsearch 는 검색뿐 아니라 여러가지 연산을 할 수 있는 Aggregation 기능이 있다. Kibana에서 차트, 그래프 등으로 시각화시킬 때 사용하는 기능이 aggregation 이다. aggregations 에는 두 가지 종류가 있다. - Metrics aggregation : 숫자 또는 날짜 필드의 값으로 계산함 - Bucket aggregation : 범위나 keyword 값으로 그룹화함 그리고 확장하여 사용할 수 있는 aggregations 도 있다. - Sub-aggregation : bucket 하위 집계 - Pipeline-aggregation : metrics aggregation 결과로 다시 집계 이 포스팅에서는 B..
[Elasticsearch] Metrics Aggregations 집계 정리 Elasticsearch Aggregations, 집계 Elasticsearch 는 검색뿐 아니라 여러가지 연산을 할 수 있는 Aggregation 기능이 있다. Kibana에서 차트, 그래프 등으로 시각화시킬 때 사용하는 기능이 aggregation 이다. aggregations 에는 두 가지 종류가 있다. - Metrics aggregation : 숫자 또는 날짜 필드의 값으로 계산함 - Bucket aggregation : 범위나 keyword 값으로 그룹화함 그리고 확장하여 사용할 수 있는 aggregations 도 있다. - Sub-aggregation : bucket 하위 집계 - Pipeline-aggregation : metrics aggregation 결과로 다시 집계 이 포스팅에서는 M..
[Elasticsearch] mapping field 수정 추가 삭제 Elasticsearch에 index를 처음 만들 때 , 필드는 어떤 것을 넣을 건지 보여주는 mappings와 analyzer, tokenizer, filter 등을 이용 및 custom 할 수 있는 settings를 함께 설정해 준다. 이 때, mapping또는 settings를 다시 세팅하고 싶은 경우가 있는데 불가능하고 다시 새로운 인덱스를 만들어 reindex해야 한다. 가능한 것은 _mappings에 새로운 field를 추가할 수 있다. 하지만 이미 만들어진 필드를 삭제하거나 타입/설정값을 수정하는 것은 불가능하다. 만약 운영 중인 es 클러스터라면 다운타임없이 진행하기위해 alias설정 후 reindex를 하면 된다. alias 설정해서 Reindex 하기 [Elasticsearch] ind..
[Elasticsearch] Analyzer, Tokenizer, Filter 개념 및 활용 방법 Elasticsearch Analyzer & Tokenizer & Filter 개념 및 사용 방법 Elasticsearch 에서 index를 만들 때 settings와 mappings를 정해주는 것이 좋다. settings는 해당 Index에서 사용할 analyzer, tokenizer, filter들을 세팅할 수 있다. 그리고 mappings에는 사용할 필드들을 선언하고 타입 등을 설정해 주는데, settings에 만들어 놓은 analyzer, tokenizer, filter을 각 필드 별로 적용하여 더 정확한 검색이 가능하다. 먼저 index를 새로 생성하기 전에 _analyze 로 임의의 text가 tokenizer, filter 로 어떻게 분석되는지 알아보면 좋다. Text가 Elasticsear..
[Elasticsearch] bool 복합 query 개념 정리 및 예제 Elasticsearch bool 복합쿼리 개념 정리 및 실습 / 예제 elasticsearch 검색에 있어 정확한 검색을 위해 bool 쿼리는 기본적으로 쓰이는 아주 유용한 query이다. 그동안 기존 코드를 사용하고 대강만 알고 있었는데 elasticsearch guide book 을 통해 정확하게 공부하고 정리해 보았다. match_all, match, match_phrase을 구별할 줄 안다면 Bool query는 금방 습득할 수 있다. 여러 조건을 모두 통합해서 검색을 할 때 상위에 Bool query를 사용한다. bool query는 다음과 같은 4개의 인자를 가지고 있다. Bool Query must 반드시 해당 쿼리가 도큐먼트에 존재해야 검색됨 must_not 쿼리가 거짓인 도큐먼트들을 검..
[Elasticsearch] object vs nested 설명 및 예제 Elasticsearch object vs nested Obeject - 한 필드 안에 하위 필드를 넣는 Object - es는 따로 배열타입의 필드를 따로 선언하지 않고 필드 타입 값만 동일하다면 배열로 그냥 넣으면 된다. -> Search 등 사용 방법은 동일하다. ex. { "title": "A" } ex. { "title": ["A", "B"] } Object mapping "characters"라는 object를 가진 인덱스 test_index mapping하기 PUT test_index { "mappings": { "properties": { "characters": { "properties": { "name": { "type": "text" }, "age": { "type": "byte" }..
[elasticsearch] PUT vs POST 사용법 및 차이 Elasticsearch PUT vs POST 사용법 및 차이 알아보기 PUT, 입력 - 데이터 입력 기능 - 데이터 수정 기능 : 존재하는 _id값이 있다면 Update 데이터를 한다. - 존재하는 _id값에 데이터 수정을 하기 싫다면 _create를 사용하면 에러가 낼 수 있다. - [ 인덱스/_doc/_id value] 형태이며 _id 값이 없으면 입력 오류가 난다. (_id 자동 생성 기능 없음 - POST는 있음) kibana로 실습해보기 PUT test_index/_doc/1 { "title": "제목1", "content": "내용1" } test_index라는 Index _doc / 1 (_id 지정해주기)에 아래 내용을 입력해준다. 결과 { "_index" : "test_index", "..
[elasticsearch] match_all, match, match_phrase 사용 방법 및 차이점 match_all, match, match_phrase 사용 방법 및 차이점 실습 전, 준비사항 test_index에 먼저 bulk로 데이터 입력해주기 & kibana POST test_index/_bulk {"index": {"_id":1}} {"message": "The little cute cat" } {"index": {"_id":2}} {"message": "The little cute cat eats the red fish" } {"index": {"_id":3}} {"message": "The little cute cat eats the brown fish" } {"index": {"_id":4}} {"message": "The cute cat little fish" } {"index": {..
[elasticsearch] preference 사용해야 하는 이유 / 방법 및 예제 알아보기 Elasticsearch search query를 날릴 때 Preference 옵션을 주어야하는 이유 그리고 그 방법 알아보기 Preference 란 ? search query를 날릴 때, elasticsearch는 디폴트로 예비 후보 nodes과 shards 중 랜덤하게 요청을 보낸다. (이 설명으로 유추해보면 primary로는 보내지 않는 것 같다.) 이 때 어떠한 shard 또는 Replica를 query search에 사용할지 유저가 "선호"를 미리 설정할 수 있는 것이 Preference option이다. Preference를 사용하지 않으면 ? ==> query 결과가 매번 다르게 된다. 똑같은 쿼리로 검색 시에 데이터의 결과 정렬이 달라질 수 있다. 검색 결과의 정렬은 es score 순으로..
[Elasticsearch] ELK란? 클러스터, 노드, 샤드에 대해 알아보기 Elastic ELK (Elasticsearch, Logstash, Kibana) Elasticsearch : 아파치 루씬 기반으로 JAVA로 개발된 분산형 RESTful 검색 및 분석 엔진 JAVA로 만들어져 JAVA 실행 가능한 환경이라면 어디서든 구동이 가능 오픈소스, 실시간 분석(real-time search), 전문 (full text) 검색 엔진, RESTful API, 멀티 테넌시, 역색인의 특징을 가짐 * 멀티 테넌시란? - 서로 다른 인덱스들을 별도의 커넥션없이 하나의 질의로 묶어서 검색, 결과도 하나의 출력으로 도출할 수 있는 특징 Logstash : 데이터 집계, 변환, 저장하는 오픈 소스 서버의 데이터 처리 파이프라인 데이터 수집을 위한 도구, Elasticsearch의 입력 수단으..
[elasticsearch] 필드 값이 존재하지않는 경우 query 만들기 Elasticsearch 에서 특정 field 값이 존재하지 않는 데이터를 찾을 때 쓰는 query 정리 exists 사용하기 GET test_index/_search { "query": { "constant_score": { // 이것도 함께 써주어야 오류가 안 난다. "filter": { "exists": { "field": "name" // "field" : "필드명" 적어주기 } } } } } 이렇게 exists를 사용하면 해당 필드 (위에서는 "name") 이 존재하는 데이터만 추려서 보여준다. 만약 type이 "nested"인 경우 query에 nested 추가하기 GET test_index/_search { "query": { "nested": { "path": "countries", "qu..
[js] input 값 숫자에 컴마 찍기 (thousands separators with commas) Input 값에 숫자를 입력하면 숫자가 그대~로 컴마없이 나온다. 1000000 -> 1,000,000 으로 변경하기 해당 input id를 불러와서 매 숫자의 천의 자리마다 "," 컴마를 찍는 함수를 keyup 이벤트로 넣어주었다. 원래는 더 간편하게 html input에 바로 onkyup="comma()" 이렇게 넣어주었다가 js가 해당 함수를 찾지못하는 에러가 났다. (랜더될 때 Js 함수가 Global이 아니라서라고 한다.) 찾아보니 global 하게 만들거나 또는 modern event handling (아래 코드 방식)으로 만드라고 해서 후자로 만들었다. html 원 javascript const money_input1 = document.getElementById('input1'); mone..
[Elasticsearch] Data Math 개념과 계산하는 방법 Elasticsearch range queries에서 또는 datarange aggregations에서 사용되는 Date Math 알아보기 1) 기본 단위들 기본 단위들은 아래와 같다. supported units y Years M Months w Weeks d Days h Hours H Hours m Minutes s Seconds 그리고 위의 단위들로 + - 기호를 사용해서 날짜를 계산할 수 있다. 2) 예시 ex) now == 2023-01-01 12:01:01 라고 할 때, 계산식 풀이 결과 now+1h now + 1 시간 2023-01-01 13:01:01 now-1h now - 1 시간 2023-01-01 11:01:01 now/m rounded down to the start of the m..
[최신] colab mecab 사용자사전 쉽게 추가하고 사용하기 일반 mecab을 google colab에 설치해서 사용자 정의 사전 추가하려니 에러가 계속 나오고 colab 위에서 해결되지 않는 에러들이 있었다. 찾아보니 colab에서 사용하는 mecab이 따로 있었다. [google colab에서 mecab 사용자 정의 사전 추가해서 사용하기] 1. Mecab-fo-for-Google-Colab 쉘스크립트를 이용하여 Mecab 설치하기 !git clone https://github.com/SOMJANG/Mecab-ko-for-Google-Colab.git cd Mecab-ko-for-Google-Colab/ !bash ./install_mecab-ko_on_colab190912.sh 2. mecab 사용해보기 from konlpy.tag import Mecab m..
colab mecab 사용자 정의 사전 세팅, 추가 및 사용하기 실패한 글 pytorch mecab 사용자 정의 사전 추가하기 목차 🕐 colab 준비 🕑 mecab 설치 🕒 mecab-ko, mecab-ko-dic 설치 및 컴파일 🕓 사용자 정의 사전 사용하기 근데 실패함 사용자 사전 추가를 위해 기존에 colab에 mecab 설치한 방식대로 진행했었는데 에러들이 나오고 결국 이 방식으로 실패함 성공한 글은 저 아래에,, 1. colab 에 Mecab 설치하기 : mecab은 보통 window에 설치하기는 어렵고 macOS, Linux에 설치할 수 있다. 하지만 설치 과정에 많은 에러가 나기로 유명하고 나도 에러가 아주 다양하게 터졌지만 어찌저찌 되긴 했다. colab 에서 mecab 설치하기 포스팅 [colab] konlpy mecab 설치 및 사용하기 on macOSX 한..
[colab] konlpy mecab 설치 및 사용하기 on macOSX 한국어 자연어처리 모델을 찾다가 여러가지가 많이 있는 대표적인 konlpy를 발견 ! 사용해보려고 했지만 설치하는 과정에서 에러가 많이 났다. 정확히는 설치는 잘 되는데 import에서 에러가 남ㅋ 처음에는 터미널에서 해야하나 터미널로 설치하고 했다가 그건 아닌 것 같고 colab에서 모두 설치하고 사용할 수 있었다. 1. bash 셸로 필요한 라이브러리들 설치 - colab에 아래 복사 붙여넣기 및 실행 %%bash apt-get update apt-get install g++ openjdk-8-jdk python-dev python3-dev pip3 install JPype1 pip3 install konlpy 2. JAVA_HOME 환경변수 설정 https://blckchainetc.tistory...
[머신러닝/딥러닝] 도대체 Tensor란 무엇인가!!! 딥러닝을 공부하기 전 반드시 알아야할 Tensors! 그냥 matrix, 배열 ! 이라고 하기엔 뭔가 찜찜해서 조금 더 찾아보았다. 먼저 간단하게 tensor가 무언인가 살펴보고 Dan 교수님(?)의 유튜버의 강의로 왜 이렇게 설명되었는지 자세히 알아보았다. Tensor 란? 아주 간단히 말하자면 데이터(오직 숫자로 이루어진)의 배열이다. python에는 List, JS에는 array 라고 부르는 배열! matrix! "The Facts of the Universe" by Lillian Lieber Lillian lieber라는 수학자는 tensors를 우주의 진리라고 표현했다. 그만큼 중요한 tensor.... tensor는 Rank (차원)를 가지는데 이는 개발할 때 자주 본 배열, 이중배열과 동일한..
[머신러닝 vs 딥러닝] 비교 및 차이 알아보기 이 내용을 정리하면서... 유튜버 Daniel은 이 강의에서 머신러닝과 딥러닝의 뜻은 분명 다르지만 설명 중에 가끔은 혼용해서 사용될 수 있고 또 해당 분야는 빠르게 발전하기 때문에 "절대적인" 지식은 아님을 강조한다! 때문에 현재의 기술을 기준으로 머신러닝/딥러닝이란 무엇인가? 왜 언제 사용하는가? 를 살펴보는 글이 될 것 같다. 구글의 머신러닝 핸드북의 첫번째 규칙, Rule 1 If you can build a simple rule-based system that doesn't require machine learning, do that. 만약 머신러닝이 필요하지않은 간단한 규칙의 시스템을 구축할 수 있으면 그렇게 해! 머신러닝이 굳이 필요하지 않다면 그냥 기존의 프로그래밍 방식으로 처리해 ~ 같다..
[pytorch vs tensorflow] 머신러닝/딥러닝 pytorch로 시작하는 이유! 이전 elasticsearch 검색 api를 마무리하고 이제 더 효율적이고 정확한 검색을 위한 자연어 처리 모델을 만들어 시도해 보려고 한다! AI/머신러닝/딥러닝에 사용되는 툴로 아주 유명한 Tensorflow, 그리고 pytorch가 있는데 이 둘을 비교해보고 pytorch로 고르게 되었다. Tensorflow란? -> 나무위키에서 보기 Pytorch란 ? Python을 위한 오픈소스 머신러닝/딥러닝 라이브러리이다. Tensorflow와 마찬가지로 GPU를 사용하여 상당이 빠르며 자연어 처리와 같은 애플리케이션을 위해 사용된다. Pytorch의 특징 - 가장 유명한 딥러닝 프레임워크 중 하나이다. - Numpy스러운 tensor연산이 GPU로도 가능하다. - 직관적이고 간결한 코드로 구성되어 이해와 ..
[Elasticsearch] analyzer [ ] contains filters [ ] that are not allowed to run in index time mode ERROR : "analyzer [analyzer_name] contains filters [synonyms_name] that are not allowed to run in index time mode." 위와 같은 에러가 나와서 찾아보니 동의어 txt 추가 할 때 updateable:true 를 주어서 에러가 난 것이었다. 이걸 지워주니 에러가 안나도 index가 잘 생성되었다. PUT keyword_test_v1 { "mappings" : { "properties" : { "tag" : { "type" : "text", "fields": { "nori": { "search_analyzer":"standard", "analyzer": "nori_mixed_analyzer", "type": "text"..

반응형