<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Hello, world!</title>
    <link>https://joonsei.tistory.com/</link>
    <description>IT 개발자의 소소한 기술 이야기.</description>
    <language>ko</language>
    <pubDate>Fri, 3 Jul 2026 15:59:48 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>joonsei</managingEditor>
    <image>
      <title>Hello, world!</title>
      <url>https://tistory1.daumcdn.net/tistory/1820497/attach/94558cb1d57e42deafbf30b440d1666c</url>
      <link>https://joonsei.tistory.com</link>
    </image>
    <item>
      <title>failed to obtain in-memory shard lock</title>
      <link>https://joonsei.tistory.com/37</link>
      <description>&lt;h2 id=&quot;Short_description&quot; data-ke-size=&quot;size26&quot;&gt;문제 발생&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;샤드 할당에 대한 메모리 내 잠금(OpenSearch Service에 설정된 임계값 이내)을 얻지 못하면 다음과 같은 오류 메시지&lt;/p&gt;
&lt;h2 id=&quot;Resolution&quot; data-ke-size=&quot;size26&quot;&gt;해결 방법&lt;/h2&gt;
&lt;h3 id=&quot;Troubleshoot_your_yellow_cluster_status&quot; data-ke-size=&quot;size23&quot;&gt;노란색 클러스터 상태 문제 해결&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클러스터가 노란색 상태로 전환되도록 하는 인덱스를 식별하려면 다음 쿼리를 사용&lt;/p&gt;
&lt;pre id=&quot;code_1671613074161&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;curl -XGET &quot;localhost:9200/_cat/indices?v&amp;amp;health=yellow&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런 다음 클러스터 할당되지 않은 샤드의 근본 원인을 확인하려면 다음 쿼리 사용&lt;/p&gt;
&lt;pre id=&quot;code_1671613122326&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;curl -XGET &quot;localhost:9200/_cluster/allocation/explain&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;Increase_the_maximum_retry_setting&quot; data-ke-size=&quot;size23&quot;&gt;최대 재시도 설정 늘리기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;클러스터를 녹색 상태로 되돌리려면 각 노란색 인덱스의 최대 재시도 횟수를 늘립니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1671613165514&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;curl -XPUT &quot;localhost:9200/&amp;lt;yellow-index-name&amp;gt;/_settings&quot; -H 'Content-Type: application/json' -d '
{
    &quot;index.allocation.max_retries&quot;: 10
}
'&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Elasticsearch</category>
      <author>joonsei</author>
      <guid isPermaLink="true">https://joonsei.tistory.com/37</guid>
      <comments>https://joonsei.tistory.com/37#entry37comment</comments>
      <pubDate>Wed, 21 Dec 2022 17:59:37 +0900</pubDate>
    </item>
    <item>
      <title>게임 마케팅 용어 정리</title>
      <link>https://joonsei.tistory.com/36</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;[유저관련&amp;nbsp;지표]&lt;/b&gt;&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100.814%; height: 255px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 13.3539%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;b&gt;UV&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 30.4057%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;Unique visitor&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 57.0543%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;게임의 접속한 실제 유저 수, 여러번 방문해도 1로 카운트&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 13.3539%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;b&gt;DAU&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 30.4057%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;Daily Active User&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 57.0543%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;일단위로 측정한 UV&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 13.3539%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;b&gt;WAU&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 30.4057%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;Week Active User&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 57.0543%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;주단위로 측정한 UV&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 13.3539%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;b&gt;MAU&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 30.4057%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;Monthly Active User&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 57.0543%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;월 단위로 UV 측정&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 13.3539%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;b&gt;RU&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 30.4057%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;Registered User&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 57.0543%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;일정기간내에 게임에 등록된 유저 수&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 13.3539%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;b&gt;NRU&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 30.4057%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;New Registered User&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 57.0543%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;일정기간내에 등록된 신규 유저 수&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 13.3539%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;b&gt;ARU&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 30.4057%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;Accumulate Register User&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 57.0543%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;해당 기간까지의 등록된 누적 유저 수&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 13.3539%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;b&gt;MUV&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 30.4057%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;Multigame Unique Visitor&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 57.0543%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;해당 기간 동안 게임 로그인하여 실제 게임을 플레이 한 회원 수&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 13.3539%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;b&gt;MTS&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 30.4057%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;Mutigame Time Spent&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 57.0543%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;해당 기간 동안의 평균 실제 플레이 타임&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 13.3539%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;b&gt;TS&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 30.4057%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;Time Spent&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 57.0543%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;해당기간 동안의 유저1인당 플레이 타임&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 13.3539%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;b&gt;CCU&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 30.4057%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;Concurrent User&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 57.0543%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;특정 시점에 접속한 동시 접속자 수&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 13.3539%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;b&gt;MCU&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 30.4057%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;Maxium Concurrent User&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 57.0543%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;하루 동안 가장 높은 동시접속자 수치&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 13.3539%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;b&gt;PCU&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 30.4057%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;Peak Concurrent User&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 57.0543%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;MCU 동일어&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 13.3539%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;b&gt;ACU&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 30.4057%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;Average Concurrent User&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 57.0543%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;1일 동안의 평균 동시 접속자 수&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 13.3539%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;b&gt;Stickness&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 30.4057%; height: 17px;&quot;&gt;Stickness&lt;/td&gt;
&lt;td style=&quot;width: 57.0543%; height: 17px;&quot;&gt;고착도&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;[매출 관련 지표]&lt;/b&gt;&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100.814%; height: 271px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 22.6964%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;b&gt;BU&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 29.7138%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;Buying user&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 48.4037%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;구매유저, 일정기간내에 게임에 아이템 구매, 월정액 결제 등 돈을 지불한 유저&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 22.6964%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;b&gt;PU&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 29.7138%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;Paying User&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 48.4037%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;BU 동일어&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 22.6964%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;b&gt;BU rate&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 29.7138%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;BU/UV&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 48.4037%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;순방문자대비 결제 유저 비율&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 22.6964%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;b&gt;CAC&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 29.7138%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;Customer Acquisition Cost&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 48.4037%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;유저 확보 비용으로 유저 1인을 확보하는데 소모되는 비용&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 22.6964%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;b&gt;CRC&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 29.7138%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;Customer Retention Cost&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 48.4037%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;유저 유지 비용으로 일정기간내에 유저1인을 유지하는데 소모되는 비용&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 22.6964%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;b&gt;ARPU&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 29.7138%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;Average Revenue Per User&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 48.4037%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;일정 기간 내 유저 1인당 평균 수입&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 22.6964%; height: 18px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;b&gt;ARPPU&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 29.7138%; height: 18px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;Average Revenue Per Paying User&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 48.4037%; height: 18px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;일정 기간내에 게임에 비용을 지불한 유저의 1인당 평균 수입&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 15px;&quot;&gt;
&lt;td style=&quot;width: 22.6964%; height: 15px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;b&gt;PPU&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 29.7138%; height: 15px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;Percentage of Paying Users&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 48.4037%; height: 15px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;DAU 내에서 결제한 비율 또는 비율&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 22.6964%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;b&gt;LTV&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 29.7138%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;Life time value&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 48.4037%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;유저 1인당 게임에서 완전히 이탈할 때까지 지불하는 비용&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 22.6964%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;b&gt;Entry Cost&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 29.7138%; height: 17px;&quot;&gt;Entry Cost&lt;/td&gt;
&lt;td style=&quot;width: 48.4037%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;여러 가지 가격대의 상품을 제공할 때 유저의 최초 구매가 어떤 가격대에서 많이 일어나는지 측정&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 22.6964%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;b&gt;Sales by Purchase&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 29.7138%; height: 17px;&quot;&gt;Sales by Purchase&lt;/td&gt;
&lt;td style=&quot;width: 48.4037%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;사용자의 구매 활동을 통해 집계된 매출&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 22.6964%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;b&gt;Sales by Advertisement&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 29.7138%; height: 17px;&quot;&gt;Sales by Advertisement&lt;/td&gt;
&lt;td style=&quot;width: 48.4037%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;광고 노출을 통해 집계된 매출&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 22.6964%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;b&gt;CPI&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 29.7138%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;Cost per Install&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 48.4037%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;게임 다운로드 후 설치하면 보상&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 22.6964%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;b&gt;CPA&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 29.7138%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;Cost per Action&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 48.4037%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;설치된 앱을 실행하면 보상&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 22.6964%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;b&gt;CPP&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 29.7138%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;Cost per Play&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 48.4037%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;CPA 이후 일정 기간 한번씩 실행할 때마다 보상&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 22.6964%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;b&gt;CPL&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 29.7138%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;Cost per Level&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 48.4037%; height: 17px;&quot;&gt;
&lt;div&gt;
&lt;div&gt;정량적인 플레이에 대한 레벨을 설정한 뒤 보상&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>etc</category>
      <category>ccu</category>
      <category>DAU</category>
      <category>게임마케팅</category>
      <category>게임용어</category>
      <category>동접</category>
      <author>joonsei</author>
      <guid isPermaLink="true">https://joonsei.tistory.com/36</guid>
      <comments>https://joonsei.tistory.com/36#entry36comment</comments>
      <pubDate>Thu, 15 Dec 2022 19:42:44 +0900</pubDate>
    </item>
    <item>
      <title>Elasticsearch Dynamic Templates</title>
      <link>https://joonsei.tistory.com/35</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;Dynamic mapping&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;색인 필드의 데이터에 대한 data type을 지정하지 않고 동적으로 elasticsearch 에서 적절한 type을 지정해 주는 기능&lt;br /&gt;&amp;nbsp;mapping type을 미리 선언하지 않고 패턴이나 분석 특성에 맞춰 구성.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;match_mapping_type&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;JSON&amp;nbsp;파서를&amp;nbsp;통해서&amp;nbsp;data&amp;nbsp;type&amp;nbsp;을&amp;nbsp;detection&amp;nbsp;합니다.&lt;br /&gt;long, double 의 경우 integer 와 float 에 대한 정확한 detection 이 어렵기 때문에 항상 long 과 double 로 detection&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;match_pattern&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이 설정은 위에서 &quot;match&quot;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;s_*&quot; 과 같은 wildcard 패턴을 java 정규식으로 사용하기 위한 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;[ ▼ 데이터 필드명의 prefix 값으로, 데이터 타입을 dynamic type 으로 사용하는 설정 ]&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1670300504587&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;curl -XPUT &quot;localhost:9200/_template/&amp;lt;indexName&amp;gt;?pretty&quot; -H 'Content-Type: application/json' -d' {
    &quot;index_patterns&quot;: [
        &quot;&amp;lt;indexName&amp;gt;&quot;
    ],
    &quot;settings&quot;: {
        &quot;number_of_shards&quot;: 1
    },
    &quot;mappings&quot;: {
        &quot;dynamic_templates&quot;: [
            {
                &quot;integers&quot;: {
                    &quot;match&quot;: &quot;i_*&quot;,
                    &quot;match_mapping_type&quot;: &quot;*&quot;,
                    &quot;mapping&quot;: {
                        &quot;type&quot;: &quot;integer&quot;
                    }
                }
            },
            {
                &quot;doubles&quot;: {
                    &quot;match&quot;: &quot;d_*&quot;,
                    &quot;match_mapping_type&quot;: &quot;*&quot;,
                    &quot;mapping&quot;: {
                        &quot;type&quot;: &quot;double&quot;
                    }
                }
            },
            {
                &quot;floats&quot;: {
                    &quot;match&quot;: &quot;f_*&quot;,
                    &quot;match_mapping_type&quot;: &quot;*&quot;,
                    &quot;mapping&quot;: {
                        &quot;type&quot;: &quot;float&quot;
                    }
                }
            },
            {
                &quot;booleans&quot;: {
                    &quot;match&quot;: &quot;b_*&quot;,
                    &quot;match_mapping_type&quot;: &quot;*&quot;,
                    &quot;mapping&quot;: {
                        &quot;type&quot;: &quot;boolean&quot;
                    }
                }
            },
            {
                &quot;longs&quot;: {
                    &quot;match&quot;: &quot;l_*&quot;,
                    &quot;match_mapping_type&quot;: &quot;*&quot;,
                    &quot;mapping&quot;: {
                        &quot;type&quot;: &quot;long&quot;
                    }
                }
            },
            {
                &quot;dates&quot;: {
                    &quot;match&quot;: &quot;date&quot;,
                    &quot;match_mapping_type&quot;: &quot;*&quot;,
                    &quot;mapping&quot;: {
                        &quot;type&quot;: &quot;date&quot;
                    }
                }
            },
            {
                &quot;objects&quot;: {
                    &quot;match&quot;: &quot;o_*&quot;,
                    &quot;match_mapping_type&quot;: &quot;*&quot;,
                    &quot;mapping&quot;: {
                        &quot;type&quot;: &quot;object&quot;
                    }
                }
            },
            {
                &quot;nesteds&quot;: {
                    &quot;match&quot;: &quot;n_*&quot;,
                    &quot;match_mapping_type&quot;: &quot;*&quot;,
                    &quot;mapping&quot;: {
                        &quot;type&quot;: &quot;object&quot;
                    }
                }
            },
            {
                &quot;strings&quot;: {
                    &quot;match&quot;: &quot;s_*&quot;,
                    &quot;match_mapping_type&quot;: &quot;*&quot;,
                    &quot;mapping&quot;: {
                        &quot;type&quot;: &quot;text&quot;,
                        &quot;fields&quot;: {
                            &quot;raw&quot;: {
                                &quot;type&quot;: &quot;keyword&quot;,
                                &quot;ignore_above&quot;: 256
                            }
                        }
                    }
                }
            },
            {
                &quot;no_integers&quot;: {
                    &quot;match&quot;: &quot;xi_*&quot;,
                    &quot;mapping&quot;: {
                        &quot;type&quot;: &quot;integer&quot;,
                        &quot;index&quot;: false
                    }
                }
            },
            {
                &quot;no_doubles&quot;: {
                    &quot;match&quot;: &quot;xd_*&quot;,
                    &quot;mapping&quot;: {
                        &quot;type&quot;: &quot;double&quot;,
                        &quot;index&quot;: false
                    }
                }
            },
            {
                &quot;no_floats&quot;: {
                    &quot;match&quot;: &quot;xf_*&quot;,
                    &quot;mapping&quot;: {
                        &quot;type&quot;: &quot;float&quot;,
                        &quot;index&quot;: false
                    }
                }
            },
            {
                &quot;no_booleans&quot;: {
                    &quot;match&quot;: &quot;xb_*&quot;,
                    &quot;mapping&quot;: {
                        &quot;type&quot;: &quot;boolean&quot;,
                        &quot;index&quot;: false
                    }
                }
            },
            {
                &quot;no_longs&quot;: {
                    &quot;match&quot;: &quot;xl_*&quot;,
                    &quot;mapping&quot;: {
                        &quot;type&quot;: &quot;long&quot;,
                        &quot;index&quot;: false
                    }
                }
            },
            {
                &quot;no_dates&quot;: {
                    &quot;match&quot;: &quot;xdate&quot;,
                    &quot;mapping&quot;: {
                        &quot;type&quot;: &quot;date&quot;,
                        &quot;index&quot;: false
                    }
                }
            },
            {
                &quot;no_objects&quot;: {
                    &quot;match&quot;: &quot;xo_*&quot;,
                    &quot;mapping&quot;: {
                        &quot;type&quot;: &quot;object&quot;
                    }
                }
            },
            {
                &quot;no_nesteds&quot;: {
                    &quot;match&quot;: &quot;xn_*&quot;,
                    &quot;mapping&quot;: {
                        &quot;type&quot;: &quot;nested&quot;
                    }
                }
            },
            {
                &quot;no_strings&quot;: {
                    &quot;match&quot;: &quot;xs_*&quot;,
                    &quot;mapping&quot;: {
                        &quot;type&quot;: &quot;text&quot;,
                        &quot;index&quot;: false
                    }
                }
            }
        ]
    },
    &quot;aliases&quot;: {}
} '&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Elasticsearch</category>
      <category>elasticsearch dynamic_templates</category>
      <category>elasticsearch template</category>
      <category>elasticsearch 스키마</category>
      <author>joonsei</author>
      <guid isPermaLink="true">https://joonsei.tistory.com/35</guid>
      <comments>https://joonsei.tistory.com/35#entry35comment</comments>
      <pubDate>Tue, 6 Dec 2022 13:22:02 +0900</pubDate>
    </item>
    <item>
      <title>Elasticsearch function_score 스코어 계산</title>
      <link>https://joonsei.tistory.com/34</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;검색 정확도 기준&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;BM25&amp;nbsp;알고리즘을 이용해 문서에 대한&amp;nbsp;score&amp;nbsp;계산&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #3366ff;&quot;&gt;&lt;b&gt;TF (Term Frequency)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;문서 내에서 자주 등장하는 단어(Term) 에 가중치를 높게 부여,&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;문서내에서 같은 단어가 여러번 등장한다면 그 단어에 높은 가중치를 주는 알고리즘&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #3366ff;&quot;&gt;&lt;b&gt;IDF (Inverse Document Frequency)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;많은 문서에서 등장하는 단어의 가중치는 낮추고, 일부 문서에만 등장하는 단어에 대해 높은 가중치 부여&lt;/li&gt;
&lt;li&gt;전체 문서에서 발생한 term 빈도수가 작을수록 weight가 높다. 문서에 자주 등장하는 단어일수록 낮은 가중치를 주는 알고리즘&lt;/li&gt;
&lt;li&gt;똑같이 1번 검색이 되었다 하더라도 문서에 자주 등장한 단어가 매칭된 키워드일수록 낮은 가중치&lt;/li&gt;
&lt;li&gt;문서에 많이 나오는게 좋은게 아닌가? 라고 생각할 수 있겠지만&lt;br /&gt;문서에 공통적으로 많이 등장하는 단어는 실제 우리가 쓰는 단어로 살펴본다면 &quot;은&quot;, &quot;는&quot;, &quot;다&quot;처럼 형용사, 부사등이 되며 이는 실제로 큰 의미를 가지지 않을 확률이 높음&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #3366ff;&quot;&gt;&lt;b&gt;FLN (Field-Length Norm)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;두개 이상의 문서에서 동일한 키워드가 동일한 빈도수로 등장한다고 가정할 때, 문서의 길이가 작은 문서에 더 높은 가중치를 부여&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;function_score 쿼리&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;검색 필드를 부스팅하여 스코어를 조정하는것은 한계가 있음.&lt;br /&gt;function_score 를 통하여 좀더 디테일하고 deep한 스코어링을 조절할 수 있음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex)&lt;br /&gt;1. 상품 검색 시, 주문 수가 많은 제품에 가중치를 부여&amp;nbsp;&lt;br /&gt;2. 인스타그램의 해시태그 검색 시, 좋아요 수에 가중치를 부여 (인기 게시물)&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;i&gt;[▼ 180일 이후 게시물에 가중치를 낮게 부여하고, 추천수가 높은 게시물에 가중치를 두어 검색 정확도 커스텀]&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1667961688944&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;GET my-index/_search
{
  &quot;profile&quot;: true,
  &quot;track_scores&quot;: true,
  &quot;track_total_hits&quot;: true,
  &quot;size&quot;: 1000,
  &quot;query&quot;: {
    &quot;function_score&quot;: {
      &quot;functions&quot;: [
        {
          &quot;gauss&quot;: {
            &quot;reg_date&quot;: {
              &quot;origin&quot;: &quot;now&quot;,
              &quot;scale&quot;: &quot;180d&quot;,
              &quot;offset&quot;: &quot;180d&quot;,
              &quot;decay&quot;: 0.5
            }
          }
        }
      ],
      &quot;query&quot;: {
        &quot;bool&quot;: {
          &quot;must&quot;: [],
          &quot;should&quot;: [
            {
              &quot;range&quot;: {
                &quot;recommend_count&quot;: {
                  &quot;gte&quot;: 1,
                  &quot;boost&quot;: 3
                }
              }
            },
            {
              &quot;multi_match&quot;: {
                &quot;query&quot;: &quot;던전 공략&quot;,
                &quot;fields&quot;: [
                  &quot;title&quot;
                ],
                &quot;operator&quot;: &quot;and&quot;
              }
            }
          ]
        }
      }
    }
  }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Elasticsearch</category>
      <category>elasticsearch</category>
      <category>elasticsearch gauss</category>
      <category>elasticsearch score</category>
      <category>elasticsearch 가중치</category>
      <category>elatsicsearch function score</category>
      <author>joonsei</author>
      <guid isPermaLink="true">https://joonsei.tistory.com/34</guid>
      <comments>https://joonsei.tistory.com/34#entry34comment</comments>
      <pubDate>Wed, 9 Nov 2022 11:43:57 +0900</pubDate>
    </item>
    <item>
      <title>index illegal_argument_exception</title>
      <link>https://joonsei.tistory.com/33</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Elasticsearch 에서 Index 삭제 시, Wildcard 로 요청하면,&lt;br /&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;--&amp;gt; &lt;i&gt;Wildcard expressions or all indices are not allowed 에러가 발생하면서 삭제가 안됨.&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1656557860454&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;curl -XDELETE &quot;localhost:9200/&amp;lt;indexName*&amp;gt;&quot;
{
  &quot;error&quot; : {
    &quot;root_cause&quot; : [
      {
        &quot;type&quot; : &quot;illegal_argument_exception&quot;,
        &quot;reason&quot; : &quot;Wildcard expressions or all indices are not allowed&quot;
      }
    ],
    &quot;type&quot; : &quot;illegal_argument_exception&quot;,
    &quot;reason&quot; : &quot;Wildcard expressions or all indices are not allowed&quot;
  },
  &quot;status&quot; : 400
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Elasticsaearch 의 action.destructive_requires_name 값을 false 로 바꿔줘야함.&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1656557631566&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;curl -XPUT &quot;localhost:9200/_cluster/settings&quot; -H 'Content-Type: application/json' -d '
{
  &quot;transient&quot;: {
	&quot;action.destructive_requires_name&quot;:false
  }
}
'


curl -XDELETE &quot;localhost:9200/&amp;lt;indexName*&amp;gt;&quot;
{
  &quot;acknowledged&quot;: true
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Elasticsearch</category>
      <category>destructive_requires_name</category>
      <category>elasticsearch</category>
      <category>index delete</category>
      <author>joonsei</author>
      <guid isPermaLink="true">https://joonsei.tistory.com/33</guid>
      <comments>https://joonsei.tistory.com/33#entry33comment</comments>
      <pubDate>Thu, 30 Jun 2022 11:59:56 +0900</pubDate>
    </item>
    <item>
      <title>Document 데이터 전체 수정</title>
      <link>https://joonsei.tistory.com/32</link>
      <description>&lt;pre id=&quot;code_1652758331069&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 게시판 카테고리 값이 없는 데이터 일괄로 &quot;기타&quot;값으로 수정
curl -XPOST &quot;localhost:9200/board-202205/_update_by_query&quot; -H 'Content-Type: application/json' -d '
{
  &quot;script&quot;: {
    &quot;source&quot;: &quot;ctx._source.category='기타'&quot;,
    &quot;lang&quot;: &quot;painless&quot;
  },
  &quot;query&quot;: {
    &quot;bool&quot;: {
      &quot;must_not&quot;: [
        {&quot;exists&quot;: {&quot;field&quot;: &quot;category&quot;}}
      ]
    }
  }
}
'&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Elasticsearch</category>
      <category>Elasticsearch 데이터 수정</category>
      <category>update by query</category>
      <author>joonsei</author>
      <guid isPermaLink="true">https://joonsei.tistory.com/32</guid>
      <comments>https://joonsei.tistory.com/32#entry32comment</comments>
      <pubDate>Tue, 17 May 2022 12:33:46 +0900</pubDate>
    </item>
    <item>
      <title>조건에 따른 특정 Document 데이터 수정</title>
      <link>https://joonsei.tistory.com/31</link>
      <description>&lt;pre id=&quot;code_1652751453833&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 1343번 게시글 카테고리를 &quot;etc&quot;로 수정
curl -XPOST &quot;localhost:9200/board-202205/_update/1343&quot; -H 'Content-Type: application/json' -d '
{
    &quot;doc&quot;: {
        &quot;category&quot;: &quot;etc&quot;
    }
}
'&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Elasticsearch</category>
      <category>Elasticsearch 데이터 update</category>
      <author>joonsei</author>
      <guid isPermaLink="true">https://joonsei.tistory.com/31</guid>
      <comments>https://joonsei.tistory.com/31#entry31comment</comments>
      <pubDate>Tue, 17 May 2022 10:37:43 +0900</pubDate>
    </item>
    <item>
      <title>조건에 따른 특정 Document 데이터 삭제</title>
      <link>https://joonsei.tistory.com/30</link>
      <description>&lt;pre id=&quot;code_1652751403636&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 1341번 게시글 삭제
curl -XPOST &quot;localhost:9200/board-202205/_delete_by_query&quot; -H 'Content-Type: application/json' -d '
{
    &quot;query&quot;: {
        &quot;match&quot;: {
            &quot;_id&quot;: &quot;1341&quot;
        }
    }
}
'

# writer 필드가 없는 게시글 일괄 삭제
curl -XPOST &quot;localhost:9200/board-202205/_delete_by_query&quot; -H 'Content-Type: application/json' -d '
{
  &quot;query&quot;: {
    &quot;bool&quot;: {
      &quot;must_not&quot;: {
        &quot;exists&quot;: {
          &quot;field&quot;: &quot;writer&quot;
        }
      }
    }
  }
}
'&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Elasticsearch</category>
      <category>delete_by_query</category>
      <category>elasticsearch</category>
      <category>Elasticsearch 데이터 삭제</category>
      <author>joonsei</author>
      <guid isPermaLink="true">https://joonsei.tistory.com/30</guid>
      <comments>https://joonsei.tistory.com/30#entry30comment</comments>
      <pubDate>Tue, 17 May 2022 10:36:51 +0900</pubDate>
    </item>
    <item>
      <title>몽고디비 컬렉션 전체 삭제하기</title>
      <link>https://joonsei.tistory.com/29</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;시스템 관련 컬렉션을 제외한 전체 컬렉션 삭제하기&lt;/p&gt;
&lt;pre id=&quot;code_1652750382140&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var dbs = db.getMongo().getDBNames();
for(var i in dbs){
    db = db.getMongo().getDB( dbs[i] );
    if (db.getName() !== 'admin' &amp;amp;&amp;amp; db.getName() !== 'local'){
        print( &quot;dropping db &quot; + db.getName() );  
        db.dropDatabase();
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>MongoDB</category>
      <category>몽고디비 컬렉션 전체 삭제</category>
      <author>joonsei</author>
      <guid isPermaLink="true">https://joonsei.tistory.com/29</guid>
      <comments>https://joonsei.tistory.com/29#entry29comment</comments>
      <pubDate>Tue, 17 May 2022 10:22:16 +0900</pubDate>
    </item>
    <item>
      <title>nodejs ejs render 대신 html 사용하기</title>
      <link>https://joonsei.tistory.com/28</link>
      <description>&lt;p&gt;- app.js&lt;/p&gt;
&lt;pre id=&quot;code_1611712012759&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 화면 engine을 ejs로 설정
app.set('view engine', 'ejs');
app.engine('html', require('ejs').renderFile);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;- index.js&lt;/p&gt;
&lt;pre id=&quot;code_1611712081947&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const express = require('express');
const router = express.Router();

/* GET home page. */
router.get('/', function(req, res, next) { 
    return res.render('index.html'); 
});

module.exports = router;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>nodejs</category>
      <category>ejs</category>
      <category>express html</category>
      <category>express html render</category>
      <category>nodejs</category>
      <category>nodejs html render</category>
      <author>joonsei</author>
      <guid isPermaLink="true">https://joonsei.tistory.com/28</guid>
      <comments>https://joonsei.tistory.com/28#entry28comment</comments>
      <pubDate>Wed, 12 Aug 2020 16:49:34 +0900</pubDate>
    </item>
  </channel>
</rss>