검색(URI vs Request Body)

URI

  • GET 방식을 사용해 URI를 통해 인자 전달
  • p128-145

RequestBody

  • POST 방식을 사용해 JSON으로 인자전달
  • p146-162

검색해보자

예제 5.2 books 인덱스, book 타입에서 hamlet 검색

http://192.168.99.100:9200/books/book/_search?q=hamlet

hamlet이란 단어가 어떤 필드에 있던 찾아와! → 1개 찾음(홋!)

여기서 ES의 특징 중 하나인, 멀티태넌시를 적용할 수 있다!! (전체 대상)

http://192.168.99.100:9200/books,magazines/_search?q=time

클러스터의 모든 인덱스에서 검색하기 위해 _all을 사용할수도 있다!

http://192.168.99.100:9200/_all/_search?q=time

p 128~13?

상세검색/통합검색

URI를 사용했을때의 문제

  • URI는 빈칸이 허용 안됨
    • 이스캐이프처리: ‘ ‘ → ‘+’, ‘+’ → ‘%2B’, ‘%’ → ‘%25’
  • 길이 제한이 있음 (4000자?)

예제 5.7 전체 인덱스의 title 필드에서 time 검색

http://192.168.99.100:9200/_search?q=title:time AND machine

  • ‘ ‘은 %20으로
  • AND는 대문자만 허용
  • RDB의 like 문법과 같음
  • like를 개선한 버전이 full-text search

DB는 요 아래 3개가 끝이다.

  • Full-text search
  • Stopword vs ngram 방식

‘sampleTest’

‘TestSample’

‘1sample2’

  1. select * from student where name like ‘%sample%’
    1. 엄청난 부하가 있음
    2. OR로 연결되어 있기 때문에
  2. Full-Text Search
    1. 중급 수준 ><
    2. 결과는 같은데 구현 방식이 다르고, 서버도 훨씬 부담이 적어
    3. 검색 엔진과 같은 방식이다
    4. 스키마를 고려하지 않겠다(스키마를 고려해서 느리거든..)
    5. 다 글로 인식하겠어! 닥치는 대로 찾겠다! (원시적인게 젤 빠른거야~)
    6. String matching 방식으로 가자. 단순한 반면, 무시막지하게 하지
    7. 이 방식도 두가지로 나뉘어 진다.
    8. 토크나이저
      1. standard 토크나이저
      2. whitespace 토크나이저(space, tab,enter)
        1. stopword랑 거의 비슷한데 조금 다름
        2. stopword는 단어로 쪼개는 것
      3. ‘나는 집에 간다’에서 집으로 검색하면 안나옴
      4. Ngram 토크나이저

p327

은 물리적으로 쪼갠거….

  • alpa-numeric???

다시 올라와서...

검색

(p130
)

예제 5.9 df 매개변수를 사용해서 title 필드에서 time 검색

http://192.168.99.100:9200/_search?q=time&df=title

예제 5.10 default_opreator 매개변수를 사용해서 기본 조건 명령어를 AND로 지정

http://192.168.99.100:9200/_search?q=time+machine&default_operator=AND

예제 5.11 explain 매개변수를 사용해서 검색 처리 결과 표시

http://192.168.99.100:9200/_search?q=title:time&explain

예제 5.12 _source 매개변수를 false로 설정해 도큐먼트 내용을 배제하고 검색

GET http://192.168.99.100:9200/_search?q=title:time&_source=false

예제 5.13 fields 매개변수를 사용해 title, author, category 필드만 출력

http://192.168.99.100:9200/_search?q=title:time&fields=title,author,category

검색 결과 Sort

5.14 author 필드가 jules인 도큐먼트를 pages 필드를 기준으로 오름차순 정렬

http://192.168.99.100:9200/books/_search?q=author:jules&sort=pages

예제 5.15 author 필드가 jules인 도큐먼트를 pages 필드를 기준으로 내림차순 정렬

http://192.168.99.100:9200/books/_search?q=author:jules&sort=pages:desc

예제 5.16 author 필드가 jules인 도큐먼트를 title 필드를 기준으로 오름차순 정렬

  • 문장 중에서 제일 중요하다고 판단되는 키워드를 가지고 정렬을 한다 (덜덜)
  • 첫단어로 정렬하고 싶으면 title 필드에 not_analyzed로 매핑을 설정해줘야 한다(뒤에 나옴)

http://192.168.99.100:9200/books/_search?q=author:jules&fields=title&sort=title

Timeout
  • 매개변수로 검색이 수행되는 동안 기다리는 제한 시간
From

실제 검색 결과는 3건이지만, 3번째 결과부터 표시되므로 1건만 표시됨

5.2.10 Size

예제 5.23 Request Body로 author 값이 william인 값 검색

HTTP에 대해서

web webdav(80)
기본적으로는 POST/GET만 제공한다. --> 가져올 때는 GET, 변경할 때는 POST를 쓰라고 만들어놨는데, 개발자들이 자꾸 GET만 쓰더라! POST/GET/PUT/DELETE (일반 웹에는 이런게 없다.)

Telnet → ssh 23/22

FTP → scp, ftps/sftp 21/22

방화벽

80

예제 5.24 from1, size2, filelds[title,category] 조건으로 전체 필드에서 time 검색

p149 Sort

예제 category - 내림차순, pages, title-오름차순 순서로 검색 결과 정렬

결과는 6개지만 size: 2 하여 2개만 나온다

JSON은 javacript에는 내장되어 있고

Java는 JSON-simple 을 깔아서 써야한다.

p157

partial_fields, fielddata_fileds

와일드 카드를 지정해서 검색할 수 있다.

p160 Highlight

기본 <em></em>으로 표기되는데, 바꿀수 있다.

results matching ""

    No results matching ""