Docker에서 ElasticSearch로 Full-Text 검색하기(1)
Docker에서 ElasticSearch로 Full-Text 검색하기(2)
지난 시간에 이어서, 이번에는 elasticsearch의 검색 결과를 향상 시켜보도록 하겠습니다.
elasticsearch는 검색 결과를 개선하기 위한 다양한 기능들을 제공합니다.
- Full-text search : ElasticSearch는 복잡한 검색 쿼리를 처리하고 관련성이 높은 결과를 반환할 수 있는 강력한 전체 텍스트 검색 엔진을 제공합니다.
- Fuzzy search : 퍼지 검색을 사용하면 용어 자체가 정확히 일치하지 않더라도 쿼리 용어와 유사한 용어를 검색할 수 있습니다.
- Autocomplete : ElasticSearch를 사용하여 자동 완성 기능을 구현하면 사용자가 원하는 콘텐츠를 빠르게 찾을 수 있습니다.
- Synonyms : ElasticSearch는 동의어 사용을 지원하여 원래 쿼리에 포함되지 않았을 수 있는 관련 용어가 검색 결과에 포함되도록 할 수 있습니다.
- Highlighting : ElasticSearch는 검색 결과를 강조 표시하는 데 사용할 수 있으므로 사용자가 가장 관련성이 높은 콘텐츠를 빠르고 쉽게 식별할 수 있습니다.
Fuzzy Search와 Autocomplete 적용 하기
elasticsearch의 가장 유용한 기능 중 하나인 Fuzzy 검색 및 자동완성을 구현 해봅시다.
// Docker에서 ElasticSearch로 Full-Text 검색하기(2)에서의 기존 코드
const searchQuery = async function (query) {
const { body } = await client.search({
index: "indexing",
body: {
query: {
match: {
content: query,
},
},
},
});
return body.hits.hits;
};
// 변경
const searchQuery = async function (query) {
const { body } = await client.search({
index: "indexing",
body: {
query: {
fuzzy: {
content: {
value: query,
fuzziness: 'AUTO'
},
}
},
},
});
return body.hits.hits;
};
elasticsearch에서 자동 완성을 구현하려면 "completion"을 사용할 수 있습니다.
사용자가 입력할 때마다 검색어에 대한 실시간 제안을 제공할 수 있습니다.
const suggestData = async function (query) {
const { body } = await client.search({
index: "indexing",
body: {
suggest: {
suggest_title: {
prefix: query,
completion: {
field: "title.suggest",
},
},
},
},
});
return body.suggest.suggest_title[0].options.map((option) => option.text);
};
suggestData("elk")
.then((results) => console.log(results))
.catch((error) => console.error(error));
위와 같이 검색 결과를 자동완성해서 보여줄 수도 있습니다.
다음 시간에는 마지막으로 Docker에 해당 APP을 배포 해보도록 하겠습니다.
'SERVER DEVELOPMENT > Docker' 카테고리의 다른 글
Docker에서 ElasticSearch로 Full-Text 검색하기(4) (2) | 2023.03.05 |
---|---|
Docker에서 ElasticSearch로 Full-Text 검색하기(2) (0) | 2023.03.05 |
Docker에서 ElasticSearch로 Full-Text 검색하기(1) (0) | 2023.03.05 |
댓글