#!/bin/bash


curl -X PUT 'http://192.168.147.128:9200/superman?pretty' -H 'Content-Type: application/json' -d '
{
  "settings" : {
    "number_of_shards" : 3,
    "number_of_replicas" : 1
  },
  "mappings" : {
    "doc" : {
      "properties" : {
        "x" : { "type" : "integer" }
      }
    }
  }
}'

 

===========================================

index 생성이 잘되었는지 확인 

 

$ curl -X GET http://192.168.147.128:9200/superman?pretty
{
  "superman" : {
    "aliases" : { },
    "mappings" : {
      "doc" : {
        "properties" : {
          "x" : {
            "type" : "integer"
          }
        }
      }
    },
    "settings" : {
      "index" : {
        "creation_date" : "1555574029883",
        "number_of_shards" : "3",
        "number_of_replicas" : "1",
        "uuid" : "dXHMdpSCQyai3nsPKdevJw",
        "version" : {
          "created" : "6060299"
        },
        "provided_name" : "superman"
      }
    }
  }
}

 

===========================================

데이터 삽입 

/**

 임의의 id로 document를 생성하라면 curl 명령어의 메서드가 post 여야만 정상적으로 실행되고 put 메서드로는 정상적으로 실행되지 않는다.

*/

 

#!/bin/bash

curl -X PUT 'http://192.168.147.128:9200/superman/doc/1?pretty' -H 'Content-Type: application/json' -d '
{
  "x" : 1
}'

 

#!/bin/bash

curl -X POST 'http://192.168.147.128:9200/superman/doc?pretty' -H 'Content-Type: application/json' -d '
{
  "x" : 10
}'

 

===========================================

전체 데이터 조회

$ curl -X GET http://192.168.147.128:9200/superman/_search?pretty

데이터 구조 
 - 인덱스 (index)
 - 타입 (type)
 - 도큐먼트 (document)

 - 인덱스 : 샤드 (shard) + 복사본 (replica)


관계형 db                     엘라스틱서치
---------------------------------------
데이터 베이스                   인덱스
테이블                           타입 (type)
열(Colume)                     도큐먼트(document)
행(Row)                          필드(field)
스키마(Schema)                매핑(Mapping)


curl -X {method} http://host:9200/{index}/{type}/{id} -H 'Content-Type: application/json' -d '{ ...}'

---------------------------------------
HTTP Method      CRUD       SQL
GET                   Read        Select
PUT                   Update     Update
POST                 Create       Insert
DELETE              Delete        Delete

'ELK > elasticsearch' 카테고리의 다른 글

elastic basic #1  (0) 2019.04.22
python ( elasticsearch - search template )  (0) 2019.04.20
특정 데이터 count  (0) 2019.04.10
Elasticsearch basic01  (0) 2019.04.02
elastisearch java api  (0) 2019.03.26

GET test-index/doc/_count
{
  "query" : {
    "term" : { "data" : "고양이" }
  }
}

 

========================

python code

 

def documentCount(self):

result = self._client.count (
  index= "stu-index-1",
  doc_type= "doc",
  body= {
     "query" : {
     "match" : {"y" : "11"}
  }
 }
)
print (result)

'ELK > elasticsearch' 카테고리의 다른 글

python ( elasticsearch - search template )  (0) 2019.04.20
Elastic basic#01  (0) 2019.04.19
Elasticsearch basic01  (0) 2019.04.02
elastisearch java api  (0) 2019.03.26
elasticsearch python 주말에 정리할 것  (0) 2019.03.18

결과 물 

OpenAPI 사용 ( 문화재청 ) 

Elasticsearch 데이터 적재 

Python Folium 사용하여 시각화 

-----------------

코드 일부분

 

from xml.etree import ElementTree
import requests
import re

from CH.chConfigFile import Conf
from Elastic.Elasrv import Elasrv

'''문화재 리스트
'''
class CttrList:

    getConfigure = Conf.chListYamlReturn()
    fetchCount = 0
    totalCount = 0

    def __init__(self):

        self.chListIndex  = CttrList.getConfigure.get("index-name")
        self.url       = CttrList.getConfigure.get("url")
        self.pageUnit  = CttrList.getConfigure.get("pageUnit")
        self.pageIndex = CttrList.getConfigure.get("pageIndex")
        self.elementsJson = []

    def urlRequest(self):

        e = dict(Conf.chListMappingReturn())
        keyList = e.keys()

        while True:

            requestUrl = "{0}?pageIndex={1}&pageUnit={2}".format(self.url, self.pageIndex, self.pageUnit)
            print ("요청 url : {}".format(requestUrl))
            html = requests.get(requestUrl)

            if html.status_code == 200:

                xmlString = re.sub(pattern="\n", repl= "", string= html.content.decode("utf-8"))

                """ xml 파일 이라면 
                """
                if xmlString[0] == "<":

                    print ("xml file")

                    xmlDoc = ElementTree.fromstring(xmlString)

                    for t in xmlDoc:

                        if t.tag == "totalCnt":
                            CttrList.totalCount = int(t.text, base=10)

                        if t.tag == "item":
                            for s in t.iter():
                                if s.tag in keyList:
                                    e[s.tag] = s.text

                            Elasrv.insert(index=self.chListIndex, document=e)

                            #self.elementsJson.append(e)

                    CttrList.fetchCount += self.pageUnit

            if (self.headers()): break
            else: self.pageIndex += 1


    def headers(self):

        if CttrList.fetchCount < CttrList.totalCount:
            return False

        else:
            return True


def main():

    ctList = CttrList()
    ctList.urlRequest()

if __name__ == "__main__":
    main()

-------------------------------------------------------

'빅데이터' 카테고리의 다른 글

임시  (0) 2018.12.08
JDBC + ELASTIC  (0) 2018.12.08

Elastic search port : 9200 를 사용 한다. 참고로 (Kibana는 5601)

index-name : movie-index

---------------------------------

term의 사전적 의미 "용어, 말"

아래 코드를 해석해보자면 movie-index의 필드 movie_jangre 에 "드라마"라는 용어가 들어있는 document를 찾아줘

 

curl -X GET "localhost:9200/movie-index/_search?pretty" -H 'Content-Type: application/json' -d '
{
  "query" : {
    "term" : {
      "movie_jangre" : "드라마"
    }
  }
}'

 

자바 api 

MatchQueryBuilder matchQueryBuilder = matchQuery("movie_jangre", searchWord);

 

 

FROM/SIZE

 

"시작 offset 0에서 부터 10개를 가져와서 조회해라"

 

curl -X GET '192.168.240.141:9200/movie-index/_search?pretty' -H 'Content-Type: application/json' -d '
{
  "from" : 0,
  "size" : 10,
  "query" : {
    "match" : {
      "movie_jangre" : "드라마"
    }
  }
}'

 

java api

 

SearchSourceBuilder sourceBuilder = new SearchSourceBuilder()
.query(matchQueryBuilder)
.from(0)
.size(20)
.sort(new FieldSortBuilder("movie_rank").order(SortOrder.ASC));

'ELK > elasticsearch' 카테고리의 다른 글

Elastic basic#01  (0) 2019.04.19
특정 데이터 count  (0) 2019.04.10
elastisearch java api  (0) 2019.03.26
elasticsearch python 주말에 정리할 것  (0) 2019.03.18
공부중  (0) 2019.03.18

python + outlook

언어/python2019. 3. 31. 14:53

import win32com.client as win32
import time

outlook = win32.Dispatch("Outlook.Application").GetNamespace("MAPI")

# 5 : 내가 보낸 메일
# 6 : 내가 받은 메일
inbox = outlook.GetDefaultFolder("6")

allBox = inbox.Items
# 몇 통의 메일이 있는지 확인
print (allBox.Count)

for msg in allBox:
# msg.Subject : 메일 제목
# SenderName : 보낸 사람 이름
# SenderEmailAddress : 보낸 사람 이메일
print ("To : {}|{} Text: {} ".format(msg.SenderName, msg.SenderEmailAddress, msg.Subject))

'언어 > python' 카테고리의 다른 글

네이버 뉴스 크롤링 + 형태소  (0) 2019.05.01
페이스북 - python  (0) 2019.04.24
selenium_  (0) 2019.03.11
2019년 3월 9일 ( 주말 프로젝트 )  (0) 2019.03.09
data crawling  (0) 2019.03.03

package com.app.elasticsrv;


import org.apache.lucene.queryparser.flexible.core.builders.QueryBuilder;

import org.elasticsearch.action.search.SearchRequest;

import org.elasticsearch.action.search.SearchResponse;

import org.elasticsearch.client.RequestOptions;

import org.elasticsearch.client.RestHighLevelClient;

import org.elasticsearch.common.unit.TimeValue;

import org.elasticsearch.index.query.QueryBuilders;

import org.elasticsearch.index.search.MatchQuery;

import org.elasticsearch.search.SearchHit;

import org.elasticsearch.search.SearchHits;

import org.elasticsearch.search.aggregations.AggregationBuilder;

import org.elasticsearch.search.aggregations.AggregationBuilders;

import org.elasticsearch.search.aggregations.BucketOrder;

import org.elasticsearch.search.aggregations.bucket.range.AbstractRangeBuilder;

import org.elasticsearch.search.aggregations.bucket.range.RangeAggregationBuilder;

import org.elasticsearch.search.aggregations.bucket.range.RangeAggregator.Range;

import org.elasticsearch.search.aggregations.metrics.cardinality.CardinalityAggregationBuilder;

import org.elasticsearch.search.aggregations.metrics.max.MaxAggregationBuilder;

import org.elasticsearch.search.aggregations.metrics.min.MinAggregationBuilder;

import org.elasticsearch.search.aggregations.metrics.sum.SumAggregationBuilder;

import org.elasticsearch.search.builder.SearchSourceBuilder;

import org.json.simple.JSONArray;

import org.json.simple.JSONObject;


import static org.elasticsearch.index.query.QueryBuilders.*;


import java.io.FileFilter;

import java.io.IOException;

import java.util.ArrayList;

import java.util.HashSet;

import java.util.List;

import java.util.Map;

import java.util.Set;

import java.util.concurrent.TimeUnit;


import com.app.util.Utils;

import com.cedarsoftware.util.io.JsonWriter;

import com.fasterxml.jackson.core.json.JsonWriteContext;


public class Srcher {

private String keyWord       = null;  // 검색 대상 

private String elastIndex    = null;  // 검색 대상 index

private RestHighLevelClient _client   = null;

private SearchRequest searchRequest   = null; // 요청

private SearchResponse searchResponse = null; // 응답 

private int from; // pagination

private int size; // pagination

private Srcher(Builder builder) {

    this.keyWord       = builder.keyWord;

    this.elastIndex    = builder.elastIndex;   

    this.from          = builder.from;

    this.size          = builder.size;

    this.searchRequest = builder.searchRequest;

    this._client       = new Elasrver().srvSetting();

}


public void searchDefault() {

System.out.println("tst : " + this.keyWord);

this.searchRequest = new SearchRequest(this.elastIndex);

SearchSourceBuilder sourceBuilder = new SearchSourceBuilder()

.query(matchQuery("name", this.keyWord))

.from(this.from)

.size(this.size)

.timeout(new TimeValue(60, TimeUnit.SECONDS));

// request

searchRequest.source(sourceBuilder);

// response

try {

this.searchResponse = this._client.search(this.searchRequest, RequestOptions.DEFAULT);

SearchHits hits = this.searchResponse.getHits();

for (SearchHit hit : hits) {

System.out.println(hit.getSourceAsString());

}

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

} // end of searchDefault function 

/**

* aggregation : Cardinality 

*/

public void resultAggregation() {

// 날짜를 기준으로 aggregation을 한다면 추천 단어로 사용할 수 있다.

CardinalityAggregationBuilder aggregation = AggregationBuilders

.cardinality("age_count")

.field("age");

SearchSourceBuilder sourceBuilder = new SearchSourceBuilder()

.aggregation(aggregation);

// request

searchRequest.source(sourceBuilder);

// response

try {

this.searchResponse = this._client.search(this.searchRequest, RequestOptions.DEFAULT);

SearchHits hits = this.searchResponse.getHits();

for (SearchHit hit : hits) {

System.out.println(hit.getSourceAsString());

}

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

} // end of resultAggregation function

/**

* sum aggregation 

*/

public void sumAggregationTest() {

AggregationBuilder aggregation = AggregationBuilders

.sum("total_age")

.field("age");

SearchSourceBuilder sourceBuilder = new SearchSourceBuilder()

.query(matchQuery("name", "kim"))

.aggregation(aggregation);

// 요청 

searchRequest.source(sourceBuilder);

try {

this.searchResponse = this._client.search(this.searchRequest, RequestOptions.DEFAULT);

// JSON 으로 변환 

JSONObject jsonObj = Utils.fromStringToJson(this.searchResponse.toString());

System.out.println(jsonObj.get("aggregations"));

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

} // end of resultAggregation function


public void testAggregation() {

AggregationBuilder aggregation = AggregationBuilders

.cardinality("age_count")

.field("age")

.precisionThreshold(100);

SearchSourceBuilder sourceBuilder = new SearchSourceBuilder()

.aggregation(aggregation);

// 요청 

searchRequest.source(sourceBuilder);

try {

this.searchResponse = this._client.search(this.searchRequest, RequestOptions.DEFAULT);

// JSON 으로 변환 

JSONObject jsonObj = Utils.fromStringToJson(this.searchResponse.toString());

System.out.println(jsonObj.get("aggregations"));

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

// ===============================================================================================

// 추천 키워드

// =================================

public void dateAggregationTest() {

/**

* cardinality로 date 별로 aggregation을 진행한다.

*/

AggregationBuilder aggregation = AggregationBuilders

.cardinality("date_count")

.field("date")

.precisionThreshold(100);

SearchSourceBuilder sourceBuilder = new SearchSourceBuilder()

.aggregation(aggregation);

Map<String, Object> responseData = null;

Map<String, String> tmpData = null;

Set<String> dateCollectSet = new HashSet<String>();  // 날짜 데이터를 담는다. 

// 요청 

searchRequest.source(sourceBuilder);

try {

this.searchResponse = this._client.search(this.searchRequest, RequestOptions.DEFAULT);

// JSON 으로 변환 -----------------------------------------------------------------

JSONObject jsonObj   = Utils.fromStringToJson(this.searchResponse.toString());

JSONObject resltObj  = (JSONObject) jsonObj.get("hits");

JSONArray  hitObj    = (JSONArray) resltObj.get("hits"); 

// -----------------------------------------------------------------------------

for (int i = 0; i < hitObj.size(); i++) {

responseData = (Map<String, Object>) hitObj.get(i);

tmpData = (Map<String, String>) responseData.get("_source");

//System.out.println(tmpData.get("date"));

dateCollectSet.add(tmpData.get("date"));

}


dateCollectSet.forEach(dateParam -> {

JSONObject resultObj = null;

AggregationBuilder sumAggregation = null;

SearchSourceBuilder sourceBuilderSum = null;

Map<String, Object> dataDict = null;

long countValue;

// =================================================================

sumAggregation = AggregationBuilders         // <=== sum aggregation 

.sum("total_date")

.field("date");

// =================================================================

sourceBuilderSum = new SearchSourceBuilder()

.query(matchQuery("date", dateParam))

.aggregation(sumAggregation);

// 요청 

searchRequest.source(sourceBuilderSum);

try {

this.searchResponse = this._client.search(this.searchRequest, RequestOptions.DEFAULT);

// JSON 으로 변환 

resultObj = Utils.fromStringToJson(this.searchResponse.toString());

dataDict = (Map<String, Object>) resultObj.get("hits");

countValue = (long) dataDict.get("total");

System.out.println(countValue + " : " + dateParam);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

});

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

/*

AggregationBuilder aggregation = AggregationBuilders

.range("date aggregation")

.field("date")

.format("yyyy-MM-dd")

.addRange("2019-03-25", );

*/

} // end of dateAggregationTest function

/**

* ==============================================================================

*  date count 

*  2019-03-26

* ==============================================================================

*/

public void recommandQueryTest1() {

// tophit 

BucketOrder order = null;

AggregationBuilder aggregation = AggregationBuilders

.terms("date_info")

.field("date")

.order(order.count(false));

SearchSourceBuilder sourceBuilder = new SearchSourceBuilder()

.aggregation(aggregation);

searchRequest.source(sourceBuilder);

try {

this.searchResponse = this._client.search(this.searchRequest, RequestOptions.DEFAULT);

// JSON 으로 변환 

JSONObject jsonObj = Utils.fromStringToJson(this.searchResponse.toString());

System.out.println(jsonObj);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

} // end of resultAggregation function


/**

* ==============================================================================

*  Recommand demo code  

*  Aggregation Query (date range)

*  2019-03-26

*  @author KimJunHyeon

*  @param

* ==============================================================================

*/

public void recommandQueryTest2() {


AggregationBuilder aggregation = AggregationBuilders

.dateRange("date_range")

.field("date")

.format("yyyy-MM-dd")

.addUnboundedTo("now+2d/d")

.addUnboundedFrom("now-10d/d")

.subAggregation(

AggregationBuilders

.terms("words")

.field("word")

.size(2)

.order(BucketOrder.count(false))

);

SearchSourceBuilder sourceBuilder = new SearchSourceBuilder()

.aggregation(aggregation);

// Elastic search server request 

searchRequest.source(sourceBuilder);

try {

this.searchResponse = this._client.search(this.searchRequest, RequestOptions.DEFAULT);

JSONObject jsonObj = Utils.fromStringToJson(this.searchResponse.toString());

JSONObject dateRageObj = (JSONObject) jsonObj.get("aggregations");

Map<String, Map<String, Object>> testElement = dateRageObj;

JSONArray jsonArry = (JSONArray) testElement.get("date_range#date_range").get("buckets");

JSONObject tmpObj = null;

Map<String, Object> result = null;

for (int i = 0; i < jsonArry.size(); i++) {

tmpObj = (JSONObject) jsonArry.get(i);

result = (Map<String, Object>) tmpObj.get("sterms#words");

JSONArray jsonArrySub = (JSONArray) result.get("buckets");

for (int j = 0; j < jsonArrySub.size(); j++) {

JSONObject jsonObject = (JSONObject) jsonArrySub.get(j);

System.out.println(jsonObject.get("key"));

}

System.out.println(jsonArrySub);

//System.out.println(JsonWriter.formatJson(tmpObj.get("sterms#words").toString()));

}

//System.out.println(JsonWriter.formatJson(jsonObj.get("aggregations").toString()));

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

} // end of resultAggregation function


/**

* aggregation :  최댓값

*/

public void rangeAggregationTest2() {

AggregationBuilder aggregation = AggregationBuilders

.range("age_count")

.field("age")

.addRange(10.0, 12.0);

SearchSourceBuilder sourceBuilder = new SearchSourceBuilder()

.query(matchQuery("name", "kim"))

.aggregation(aggregation);

 

// 요청 

searchRequest.source(sourceBuilder);

try {

this.searchResponse = this._client.search(this.searchRequest, RequestOptions.DEFAULT);

// JSON 으로 변환 

JSONObject jsonObj = Utils.fromStringToJson(this.searchResponse.toString());

System.out.println(jsonObj.get("aggregations"));

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

} // end of resultAggregation function

public void clientNodeDie() {

if (_client != null) {

try {

_client.close();

System.out.println("client node die !!");

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

/**

* @author user

* builder pattern 

*/

public static class Builder {

private String keyWord    = null; // 검색 대상 

private String elastIndex = null; // 검색 대상 index

private SearchRequest searchRequest = null;

private int from; // pagination

private int size; // pagination

/**

* 검색 대상  

* @param keyWord

*/

public Builder(String keyWord) {

if (keyWord == null) {

throw new IllegalArgumentException("keyWord can not be null");

else {

this.keyWord = keyWord;

}

}

/**

* 검색 페이지 설정

* @param from

* @param size

* @return

*/

public Builder withPagination(int from, int size) {

this.from = from;

this.size = size;

return this;

}

/**

* 검색 인덱스 설정

* @param elastIndex

* @return

*/

public Builder withIndex (String elastIndex) {

this.elastIndex = elastIndex;

searchRequest = new SearchRequest(this.elastIndex);

return this;

}

/**

* @return

*/

public Srcher build() {

return new Srcher(this);

}

}

}



'ELK > elasticsearch' 카테고리의 다른 글

특정 데이터 count  (0) 2019.04.10
Elasticsearch basic01  (0) 2019.04.02
elasticsearch python 주말에 정리할 것  (0) 2019.03.18
공부중  (0) 2019.03.18
java api - nestedQuery  (0) 2019.03.12

jinja + html

언어/html2019. 3. 24. 12:11
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{{ name }}</title>
<style>
th#t01 {
background-color: #f1f1c1;
}
td {
text-align: left;
}
</style>
</head>
<body>
<table style="width:100%" border="2">
{% for e in data_dict %}
{% for key, value in e.items() %}
<tr>
<th id="t01"> {{ key }} </th>
<td>
{% if key == "movie_summary" %}
{% for k, v in dict(value).items() %}
<table>
<tr>
<th> {{ k }} </th>
<td> {{ v }} </td>
</tr>
</table>
{% endfor %}
{% else %}
{% if key == "movie_poster_path" %}
<img src= "{{ value }}">
{% else %}
{{ value }}
{% endif %}
{% endif %}
</td>
</tr>
{% endfor %}
{% endfor %}
</table>
</body>
</html>


'언어 > html' 카테고리의 다른 글

스터디 (html-> list)  (0) 2017.09.10
<h1> </h1>  (0) 2016.05.24
테스트  (0) 2016.05.10
작업중  (0) 2016.02.28
study1  (0) 2016.02.16

참고 url

https://www.youtube.com/watch?v=UPkqFvjN-yI

from elasticsearch import Elasticsearch
import json
from yaml import load

class Elaserv:

def __init__(self):
self.client = Elasticsearch(hosts=Elaserv.yamlFileRead())

"""
matchall query 에 대한 함수
"""
def defaultMatchAll(self):

queryJson = open("./ddl/match-all.json", "r")
query = json.load(queryJson)

result = self.client.search(index="hex_color_list", body=query)

with open("./resultJson/test.json", "w", encoding="utf-8") as f:
json.dump(result, fp=f, ensure_ascii=False, indent=3)
f.close()
queryJson.close()

"""

"""
def defualTermQuery(self):

queryJson = open("./ddl/term-query.json", "r")
query = json.load(queryJson)

result = self.client.search(index="hex_color_list", body=query)

with open("./resultJson/termQueryResult.json", "w", encoding="utf-8") as f:
json.dump(result, fp=f, ensure_ascii=False, indent=3)
f.close()
queryJson.close()



def defualMatchQuery(self):

queryJson = open("./ddl/match-query.json", "r")
query = json.load(queryJson)

result = self.client.search(index="hex_color_list", body=query)

with open("./resultJson/matchQueryResult.json", "w", encoding="utf-8") as f:
json.dump(result, fp=f, ensure_ascii=False, indent=3)
f.close()
queryJson.close()


@classmethod
def yamlFileRead(cls):

try:

f = open("./element/info.yaml", "r")
except FileNotFoundError as e:
print (e)
f.close()
exit(1)
else:
ip = dict(load(f.read())).get("ip")
f.close()
return ip


def main():
elnode = Elaserv()
# elnode.defaultMatchAll()
# elnode.defualTermQuery()
elnode.defualMatchQuery()
if __name__ == "__main__":
main()




"""
curl -X GET 'localhost:9200/hex_color_list/_search?pretty' -H 'Content-Type: application/json' -d '
{
"query": {
"match_all": {}
}
}
'
"""



{
"query": {
"match": {
"name": "add8e6"
}
}
}


'ELK > elasticsearch' 카테고리의 다른 글

Elasticsearch basic01  (0) 2019.04.02
elastisearch java api  (0) 2019.03.26
공부중  (0) 2019.03.18
java api - nestedQuery  (0) 2019.03.12
java elasticsearch ( 주말에 정리할 코드 )  (0) 2019.03.08

공부중

ELK/elasticsearch2019. 3. 18. 19:14

엘라스틱 서치 정리.docx


'ELK > elasticsearch' 카테고리의 다른 글

elastisearch java api  (0) 2019.03.26
elasticsearch python 주말에 정리할 것  (0) 2019.03.18
java api - nestedQuery  (0) 2019.03.12
java elasticsearch ( 주말에 정리할 코드 )  (0) 2019.03.08
python + elasticsearch  (0) 2019.02.21