Cloudant에서 timestamp으로 검색하기

7284 단어 Cloudant
개시하다
클라우드에서 타임스탬프 검색을 하려면 Seach Index를 만들어야 하는데 쉽고 쉽게 소개할 수 있는 방법을 찾지 못해 메모를 위해 썼다.
Docoment 준비

예제 문서 추가name, timestamp 두 필드.
{ "name": "satoshi", "timestamp": "2020-05-27T14:04:22+09:00" }
검색 인덱스 만드는 법
1. 데이터베이스를 만든 후 Design Doctoments > New Search Index 를 선택합니다.

2. Search index 정보 설정
_desing/xxxx, Index name, Seach index function, Analyzer 설정, Save Doctent and Build Index 클릭
searchIndexFunction

function (doc) {
  index("name", doc.name, { "store": true });
  index("timestamp", doc.timestamp, { "store": true });
}

주의점
  • xxxx,Index name 이후에 사용하기 때문에 정확한 이름을 설정
  • 검색 결과로 반환할 필드 이름을 index("xxxx", doc.xxxx, { "store": true });에 지정
  • Analyzer & Single & Type을 Keyword
  • 로 설정
    3. 다음 조회를 시도한다.
    timestamp: [ "2020-05-27T14:04:22+09:00" TO "2020-05-30T14:04:22+09:00"]
    
    지정된 범위의 Doctument를 확보하면 성공합니다.

    이상 설정
    노드js에서timestamp로 검색
    npm install @cloudant/cloudant
    
    test.js
    
      const Cloudant = require('@cloudant/cloudant');
      const cloudant = Cloudant({ 
              url: "",
              plugins: { iamauth: { iamApiKey: "" } } 
          });
    
      const db = cloudant.db.use("dbName");
    
      const start = '2020-05-27T14:04:22+09:00'
      const end = '2020-05-30T14:04:22+09:00'
      const payload = {
          q: `timestamp: ["${start}" TO "${end}"]`, 
          limit: 200 // 検索結果で返ってくるのはデフォルトで10件 最大でも200件
      }
    
      // Search Indexの作成方法で指定したxxxx, Index nameを1つ目、2つ目の引数で指定
      db.search('Index', 'timestampIndex', payload)
      .then((result) => {
          console.log(JSON.stringify(result, null, 2))
      })
      .catch((err) => {
          console.log(err)
      });
    
    UI 와 동일한 결과를 얻었습니다.
    > node test.js
    {
      "total_rows": 2,
      "bookmark": <省略>,
      "rows": [
        {
          "id": "c61fa495d24d4b9c7fddd59109e75386",
          "order": [
            1,
            0
          ],
          "fields": {
            "name": "yoshino",
            "timestamp": "2020-05-27T14:04:22+09:00"
          }
        },
        {
          "id": "07d7c46dbce4b2820d0094a085ff4f11",
          "order": [
            1,
            0
          ],
          "fields": {
            "name": "satoshi",
            "timestamp": "2020-05-27T14:04:22+09:00"
          }
        }
      ]
    }
    

    좋은 웹페이지 즐겨찾기