본문 바로가기
SERVER DEVELOPMENT/Docker

Docker에서 ElasticSearch로 Full-Text 검색하기(3)

by F.E.D 2023. 3. 5.

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을 배포 해보도록 하겠습니다.

 

 

 

출처 : https://voskan.host/2023/02/18/full-text-search-with-node-js-and-elasticsearch-on-docker/?mibextid=S66gvF

댓글