본문 바로가기

반응형

Welcome !

(441)
[mongoDB] find 특정 텍스트 스트링 포함된 값 찾기 / 제외하기 mongoDB Find 자세히 알아보기 1. mongoDB의 한 Field 중 특정 텍스트 값을 가진 데이터 찾기 /.* .*/ ex 1) const result = await ACerTainModel.find({ newAddress: /.*광역.*/ }); newAddress 필드에 "광역"이 들어간 모든 데이터가 나온다. 앞 뒤 string 무관 찾을 수 있는 newAddress value : 울산광역시 / 인천광역시 / 광역시 / 광역 / 김광역... 2. 특정 텍스트 값이 없는 데이터 찾기 { filed: { $not: /.*.*/ } } ex 2) const result = await ACerTainModel.find({ newAddress: { $not: /.*서울.*/ } }); newA..
[mongoimport] CSV 파일 createdAt 넣기 'createdAt', could not parse token '2022-05-13 17:05:52' to type date_oracle mongoimport 로 넣은 데이터들이 생각해보니 CraetedAt field가 없었다. 🤦🏽‍♀️ 모델 스키마에 timestamps : true 도 하고 createdAt / updatedAt까지 써주었지만 (원래는 timestamps: true로 충분!!) createdAt이 넣어지지 않아서 생각해보니 webstorm의 내 스키마와 내 터미널의 mongoimport문은 서로 연결(?)고리가 없었다 !! insert하려는 csv 파일에 날짜 형식을 넣어봐도 아래와 같은 에러가 났다. 'createdAt', could not parse token '2022-05-13 08:26:52' to type date_oracle 해결법 : 에러 메세지를 자세히 보면 type date_oracle
[node.js] txt 파일 UTF-8 EUC-KR 인코딩 디코딩 방법 EUC-KR 로 인코딩 되어있는 txt 파일을 node.js로 불러 읽으려니 한글이 깨져 나온다. 인코딩을 위해 순수 자바스크립트로 만들어져 빠르다는 iconv-lite 패키지를 설치해보기 1. iconv-lite 설치 npm install iconv-lite 2. iconv-lite / fs 가져오기 import fs from 'fs'; import iconv from 'iconv-lite'; 3. 사용하기 * iconv-lite 패키지의 특징은 'UTF-8'을 기준으로 한다는 것 ! const file = '/Users/Documents/address_data/match_build_seoul.txt'; // EUC-KR로 된 txt파일 읽은 데이터 content에 담기 const content = f..
[mongoDB] create index $text search 걸어서 특정 단어 검색하기 mongoDB의 한 테이블 안에서 특정 단어 검색할 때 검색할 필드에 inde를 먼저 걸어주어야 한다. 검색하고자하는 필드에 index 생성 db.reviews.createIndex( { comments: "text" } ) Index 여러개 생성 시 db.reviews.createIndex( { subject: "text", comments: "text" } ) => 이렇게 인덱스를 걸어주면 mongodb find 쿼리문에서 $text 를 사용할 수 있다. db.reviews.find({$text: { $search: "내돈내산"} }); 인덱스를 걸은 필드들 중 "내돈내산" 스트링이 있는 document를 찾아준다. Reference : https://www.mongodb.com/docs/manua..
GRS80 UTM-K 좌표계 GPS 표준 좌표 WGS84로 변환하기 공공데이터 api 에서 받은 주소 좌표가 한국 기준의 GRS80 UTM-K로 되어 있었다. 이 좌표값을 GPS 세계 표준 좌표인 WGS84 (EPSG:4326)로 변환하기 구글맵 GPS나 Elasticsearch에는 WGS84를 기준으로 사용한다. 좌표계에 대해 찾아보니 좌표 변환 계산이 생각보다 매 ~ 우 복잡했다. 이미 좌표계 변환에 널리 쓰이는 라이브러리 - proj4가 있어서 이걸 사용해서 변환을 했다. 1. proj4 설치 npm install proj4 2. proj4 가져와서 사용하기 import proj4 from 'proj4'; const exec = async () => { const grs80UtmK = '+proj=tmerc +lat_0=38 +lon_0=127.5 +k=0.999..
[mongoimport ] txt cvs파일 mongoDB 대량 insert하기 / type 타입 지정 공공데이터에서 서울 지역의 주소및 정보 txt 파일을 csv로 변환한 후 mongoimport를 사용하여 mongoDB에 밀어 넣기를 해보았다. 처음에는 데이터를 가공해서 넣어야지 했는데 총 60.8만건이어서 매우 막막했다. 먼저 txt -> csv 파일로 변환하기 + 엑셀 표로 만들기 포스팅은 👇 https://blckchainetc.tistory.com/398 txt 파일을 cvs 파일로 바꾸는 방법 / txt, cvs 파일 엑셀 표로 만들기 서울지역의 txt 파일을 mongoDB로 옮기기 위해 txt를 cvs 파일로 바꿨다. 1. txt파일을 Excel로 연다. 2. 다른 이름으로 저장 -> csv utf-8 을 선택한다. 3. 끝~~ 그런데 cvs 파일을 열어보면 표로 되어 있지.. blckcha..
txt 파일을 cvs 파일로 바꾸는 방법 / txt, cvs 파일 엑셀 표로 만들기 서울지역의 txt 파일을 mongoDB로 옮기기 위해 txt를 cvs 파일로 바꿨다. 1. txt파일을 Excel로 연다. 2. 다른 이름으로 저장 -> csv utf-8 을 선택한다. 3. 끝~~ 그런데 cvs 파일을 열어보면 표로 되어 있지 않다. 왜냐하면 다운 받은 txt 파일은 쉼표가 아닌 " | " 기호로 분리되어 있어서 + 표로 되어있지 않아서 그렇다. 이걸 표로 만드려면 아래와 같이 하면 된다. 1. 새로운 엑셀 시트를 열고 -> 데이터 -> 텍스트에서 가져오기 클릭 2. 표로 바꿀 txt 파일을 가져온다. 3. 아래와 같은 옵션으로 설정 후 다음을 클릭 4. "|" 으로 구분기호를 설정하고 다음 클릭 5. "일반" 설정하고 마침 클릭 6. 그러면 데이터가 표로 잘 구분된다. E+11 이렇게..
[Elasticsearch] node.js search 검색 사용법 / parameters / options [ 업데이트 중.... ] 🤿 Elasticsearch + node.js search 정리 및 실습 Query DSL : json 포맷으로 query를 만들어 검색하기 이를 실습하기 전 알아야할 개념 1) Query Context "해당 document가 query 절과 얼마나 잘 일치하는가?" 라는 질문에 응답 => _score(관련성 점수) 로 표현 2) Filter Context "해당 document가 query 절과 일치합니까?" 라는 질문에 응답 => true or flase로 반환, 점수는 계산하지 않음 index: 'test' 안에 있는 모든 도큐먼트를 가져오기 // search 실습 🍕 const searchResult = await client.search({ index: 'test' ..
[JavaScript] 콘솔로그 전체 보기 / console.log more items.. 전체 펼쳐보기 아주 오~랜만에 적는 JS 관련 글! 나는 아직 디버깅할 때 console.log를 많이 사용하는데 가끔 데이터가 아주 길거나 많으면 console.log(numberArray); 이렇게 표시되고 나머지 데이터는 볼 수가 없다. 안의 데이터는 사실 전체를 확인해야하는 일이 별로 없지만 만약 확인해야한다면 console.log 대신 console.dir을 사용하고 첫 번째 인자값 = log 볼 데이터 두 번재 인자값 = 옵션 : maxArrayLength: null 을 넣어주면 console.dir(numberArray, { maxArrayLength: null }); 모든 데이터가 콘솔에 출력된다. 
TypeError [ERR_UNESCAPED_CHARACTERS]: Request path contains unescaped characters 공공 데이터 사이트에서 API를 가져와 사용할 때 나온 TypeError [ERR_UNESCAPED_CHARACTERS]: Request path contains unescaped characters 찾아보니 const requestUrl = 'http://openapi.kric.go.kr/openapi/convenientInfo/stationInfo'; const subwayServiceKey = 'mywkjv32kjshh....'; const stationName ='용산'; const url = `${requestUrl}?serviceKey=${subwayServiceKey}&format=json&stinNm=${stationName}`; console.log('url =', url); 한글을 ur..
[Elasticsearch] Nori 설치 및 실습해보기 Elasticsearch 검색 기능 중 한국어 형태소 분석을 위해 elasticsearch에서 공식적으로 개발한 nori 설치 및 사용해보기 1. nori 설치하기 elasticsearch가 설치된 bin으로 가서 설치한다. elasticsearch-plugin install analysis-nori elasticsearch가 어디에 설치되었는지 확인하고 싶을 때 아래 명령어를 입력하여 확인한다. which elasticsearch 2. elasticsearch 재시작 brew services restart elastic/tap/elasticsearch-full 3. Kibana Dev Tools 에서 _analyze 로 실습해보기 Nori는 nori_tokenizer 토크나이저와 nori_part_of..
[Elasticsearch] scoring _score field 점수매기는 프로세스 🍭 Elasticsearch scoring에 대해 Elasticsearch에서 scoring이란 유저 쿼리에 의해 검색된 documents의 관련성을 결정하는 프로세스이다. scoring이 어떻게 진행되는지 자세히 보기 전, elasticsearch의 검색 과정을 살펴보기 Elasticsearch의 검색 프로세스 1. 먼저 elasticsearch 유저 쿼리에 맞는 모든 도큐먼트들을 찾는다. 이때, 쿼리에 맞으면 1을, 맞지 않으면 0으로 반응하는 Lucene Boolean model을 사용한다. 2. 쿼리와 일치한 도큐먼트들을 Lucene Practical Scoring Function을 사용하여 각 도큐먼트에 점수를 매기고 (score) 그들의 관련성에 따라 분류한다. * Lucene Practica..
docker compose ELK 설치하려다가 실패한 글 1. docker & docker-compose 설치 잘 설치되었는지 확인 docker -v docker-compose -v 2. 컨테이너 설정파일 만들기 (github에서 다운 및 수정) https://github.com/deviantony/docker-elk GitHub - deviantony/docker-elk: The Elastic stack (ELK) powered by Docker and Compose. The Elastic stack (ELK) powered by Docker and Compose. - GitHub - deviantony/docker-elk: The Elastic stack (ELK) powered by Docker and Compose. github.com 2-1) dock..
[security_exception] missing authentication credentials for REST request 해결법 사용자 아이디 / 비밀번호의 인증이 필요하다. curl 명령어 뒤에 --user : 를 붙여주면 된다. Elaseticsearch service token 만들기 curl -X POST "localhost:9200/_security/service/elastic/fleet-server/credential/token/token1?pretty" --user elastic:asdfasdf
ERROR: for docker-elk-main_logstash_1 Cannot start service logstash: Ports are not available: listen tcp 0.0.0.0:5000: bind: address already in use docker ELK docker-compose up 명령어 중 에러가 나왔다. ERROR: for docker-elk-main_logstash_1 Cannot start service logstash: Ports are not available: listen tcp 0.0.0.0:5000: bind: address already in use port 5000이 이미 사용 중이라는 것 !! 사용 중인 포트를 제거하는 명령어를 입력해도 계속해서 켜진다. lsof -i:5000 kill -9 PID 이런 경우 해결법 1. 5000번 이외의 다른 포트 사용하기 해결법 2. 시스템 환경설정 -> 공유 (share) -> AirPlay 수신 모드를 꺼주면 된다. AirPlay는 주변에 있는 iPhon, Mac, i..
[Elasticsearch] dynamic : true / false / runtime / strict 알아보기 Parameters for dynamic dynamic parameter는 mappings에 설정되지 않은 새로운 fields를 동적으로 추가하지 말지를 정한다. await client.indices.create({ index: 'test', body: { mappings: { dynamic: false, properties: { id: { type: 'keyword' }, title: { type: 'text' }, body: { type: 'text' }, count: { type: 'integer' }, date: { type: 'date' }, tags: { type: 'keyword' } } } } }) ☀️ true (default) 새로운 필드를 mapping에 추가한다. false new..
[Elasticsearch] 연습 🔥 Elasticsearch 실험 🔥 1번 - split2가 왜 필요한지 궁금해서 .pipe(split(JSON.parse))를 빼봄 조건 : datasource = fs.createReadStream(datasetPath); data = test-bulk2.ndjson ( mappings와 맞는 스키마) mappings - dynamic : false allDocument = [ { _index: 'test', _type: '_doc', _id: 'BsLSK4AByTPDy5Ar5LWO', _score: 1, _source: { type: 'Buffer', data: [Array] } } ] _source.data 가 아래처럼 나옴 2번 - split2를 다시 넣어봄 .pipe(split(JSON.par..
React Native setup with TypeScript 1. reactNative 에서 using typeScript 부분 명령어 입력 https://reactnative.dev/docs/typescript 요 아래 명령어 입력 전 어떤 위치에 해당 프로젝트를 시작할지 미리 경로 들어가있기 $ npx react-native init [MyApp name] --template react-native-template-typescript -> react-native 등 필요한 것들을 모두 설치가 자동으로 된다. ** 만약 xcode가 설치되지 않은 상태라면 에러가 나온다. 자세한 해결법은 아래에 👇 https://blckchainetc.tistory.com/386 [React Native] xcrun: error: SDK "iphoneos" cannot be l..
[React Native] xcrun: error: SDK "iphoneos" cannot be located unable to lookup item 'Path' in SDK 'iphoneos' Failed to install CocoaPods dependencies for iOS project, which is required by this template. React Native 를 TypeScript를 사용하여 실행하기 위해 처음 명령어를 입력 후에 $ npx react-native init LuckIsComing --template react-native-template-typescript Failed to install CocoaPods dependencies for iOS project, which is required by this template. 에러가 나왔다. 에러 설명에 나온대로 $ cd ./[프로젝트명]/ios && pod install 해당 ios에 들어가 pod를 수기 설치하니 또 에러가 나왔다. xcrun: error: SDK "iphoneos" cannot be located unable to lookup item 'Path' in..
[React Native] "RNSScreenStackHeaderConfig" was not found in the UIManager. React Native에서 navigator 사용을 위해 아래의 라이브러리 들을 설치했다. $ npm install @react-navigation/native @react-navigation/native-stack 문제가 없다고 생각했는데 나온 에러 ! "RNSScreenStackHeaderConfig" was not found in the UIManager. 찾아보니 필수로 설치가 필요한 라이브러리들이 두개 더 있었다. $ npm install react-native-screens react-native-safe-area-context 위 두개를 더 설치하고 프로젝트 경로로 가서 $ cd ios $ pod install $ cd .. $ react-native run-ios pod install을 다..
[Elasticsearch + Node.js] index 생성 삭제 조회 bulk CRUD with TypeScript Elasticsearch + Node.js + Typescript로 elasticsearch 실습하기 @elastic/elasticsearch version : 8.1.0 typescript version : 4.6.3 1. 새 프로젝트 환경 설정 https://blckchainetc.tistory.com/381 [TypeScript + Node.js] 새 프로젝트 시작하기 (환경 설정, nodemon, rimraf) TypeScript + Node.js 튜토리얼 ✍🏼 1. 폴더 생성 새 폴더 만들고 webstorm or VSCode로 열기 cd [새폴더 명] - 새로 만든 폴더 경로로 들어가기 2. Setup Node.js package.json npm init -y // -y 옵션을.. blckcha..
[Elasticsearch] node.js로 bulk 입력/업데이트/삭제 Bulk helpers - index, insert, update, delete Elastic Bulk Operation을 할때 필요한 helpers 알아보기 Elasticsearch Bulk helpers async function index() { const datasetPath = path.join(__dirname, '..', 'fixtures', 'test-bulk.ndjson'); const datasource = fs.createReadStream(datasetPath).pipe(split(JSON.parse)); console.log('datasetPath=', datasetPath); console.log('datasource=', datasource); const result = await client.helpers.bulk({ datasource, // 필수값인 ..
[Elasticsearch + Node.js] with Typescript 연결하기 node.js와 TypeScript 기본 환경 설정 정리한 글 => https://blckchainetc.tistory.com/381 [TypeScript + Node.js] 새 프로젝트 시작하기 (환경 설정, nodemon, rimraf) TypeScript + Node.js 튜토리얼 ✍🏼 1. 폴더 생성 새 폴더 만들고 webstorm or VSCode로 열기 cd [새폴더 명] - 새로 만든 폴더 경로로 들어가기 2. Setup Node.js package.json npm init -y // -y 옵션을.. blckchainetc.tistory.com 1. elatic/elasticsearch를 설치한다. npm install @elastic/elasticsearch 2. src폴더 내 파일에 el..
[TypeScript + Node.js] 새 프로젝트 시작하기 (환경 설정, nodemon, rimraf) TypeScript + Node.js 튜토리얼 ✍🏼 1. 폴더 생성 새 폴더 만들고 webstorm or VSCode로 열기 cd [새폴더 명] - 새로 만든 폴더 경로로 들어가기 2. Setup Node.js package.json npm init -y // -y 옵션을 주면 모든 defaults값을 yes로 하는 것 -> package.json 파일이 자동생성된다. 3. Add TypeScript as a dev dependency npm install typescript --save-dev -> dependency 추가를 하니 package-lock.json 파일이 자동생성된다. typescript 설치 후에, tsc 명령어를 통해 타입스크립트 컴파일러 command line에 접근할 수 있다. 4..

반응형