Lucene Query Syntax란?
- 엘라스틱 서치(Elasticsearch)의 핵심 엔진인 Lucene에서 사용하는 간단한 뭐리 문법
기본 사용법
- field:value 형식으로 쿼리문 작성
- GET /my_index/_search?q=name:Elasticsearch
- 대소문자 구분이 없음
- 여러 조건 조합 가능 (AND, OR, NOT)
Lucene Query Syntax 예제 코드
const axios = require('axios');
const url = 'http://localhost:9200/test_index/_search?q=name:react';
axios.get(url)
.then(res => {
const jsonRes = JSON.stringify(res.data, null, 2);
console.log(jsonRes)
})
.catch(err =>{
console.error(err);
});

Lucene Query Syntax(AND) 예제 코드
const axios = require('axios');
const url = 'http://localhost:9200/test_index2/_search?q=name:react AND description:explore';
axios.get(url)
.then(res => {
const jsonRes = JSON.stringify(res.data, null, 2);
console.log(jsonRes)
})
.catch(err =>{
console.error(err);
});
- 위 코드를 node 로 실행하면
name이 react이면서 description 이 explore인 데이터들만 조회된다.

Lucene Query Syntax (OR)
const axios = require('axios');
const url = 'http://localhost:9200/test_index2/_search?q=name:react OR description:real-time';
axios.get(url)
.then(res => {
const jsonRes = JSON.stringify(res.data, null, 2);
console.log(jsonRes)
})
.catch(err =>{
console.error(err);
});
name이 react이거나 설명이 real-time인 것들을 조회
- 둘 중 한개만 만족해도 조회됨

Lucene Query Syntax (NOT) 예제
const axios = require('axios');
const url = 'http://localhost:9200/test_index/_search?q=name:Elasticsearch NOT description:Getting';
axios.get(url)
.then(res => {
const jsonRes = JSON.stringify(res.data, null, 2);
console.log(jsonRes)
})
.catch(err =>{
console.error(err);
});
name이 Elasticsearch이면서 description이 Getting이 아닌 데이터 조회