-
Docker에서 ElasticSearch로 Full-Text 검색하기(3)SERVER DEVELOPMENT/Docker 2023. 3. 5. 17:44
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