├── .gitattributes ├── .gitignore ├── Commands.md ├── LICENSE ├── README.md ├── Serverless-Search-Details.pptx ├── document_batch ├── app.js └── package-lock.json ├── document_indexer ├── app.js ├── package-lock.json └── package.json ├── document_search ├── app.js ├── movies_index.json ├── package-lock.json └── package.json ├── imgs ├── Architecture.png ├── indexing-latency.png └── query-latency.png ├── movies.json ├── sample-indexer ├── package-lock.json ├── package.json └── sampleindexbuilder.js ├── scale-test ├── main.js ├── movies-results │ ├── linear │ │ ├── movies - 1,1.txt │ │ └── movies-1,10.txt │ ├── parallel │ │ └── run1-12K-records.txt │ └── readme.md ├── package-lock.json ├── package.json └── scale-data.xlsx └── template.yaml /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # Created by https://www.gitignore.io/api/osx,node,linux,windows 3 | 4 | ### Linux ### 5 | *~ 6 | 7 | #aws generated yaml 8 | packaged.yaml 9 | 10 | # temporary files which can be created if a process still has a handle open of a deleted file 11 | .fuse_hidden* 12 | 13 | # KDE directory preferences 14 | .directory 15 | 16 | # Linux trash folder which might appear on any partition or disk 17 | .Trash-* 18 | 19 | # .nfs files are created when an open file is removed but is still being accessed 20 | .nfs* 21 | 22 | ### Node ### 23 | # Logs 24 | logs 25 | *.log 26 | npm-debug.log* 27 | yarn-debug.log* 28 | yarn-error.log* 29 | 30 | # Runtime data 31 | pids 32 | *.pid 33 | *.seed 34 | *.pid.lock 35 | 36 | # Directory for instrumented libs generated by jscoverage/JSCover 37 | lib-cov 38 | 39 | # Coverage directory used by tools like istanbul 40 | coverage 41 | 42 | # nyc test coverage 43 | .nyc_output 44 | 45 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 46 | .grunt 47 | 48 | # Bower dependency directory (https://bower.io/) 49 | bower_components 50 | 51 | # node-waf configuration 52 | .lock-wscript 53 | 54 | # Compiled binary addons (http://nodejs.org/api/addons.html) 55 | build/Release 56 | 57 | # Dependency directories 58 | node_modules/ 59 | jspm_packages/ 60 | 61 | # Typescript v1 declaration files 62 | typings/ 63 | 64 | # Optional npm cache directory 65 | .npm 66 | 67 | # Optional eslint cache 68 | .eslintcache 69 | 70 | # Optional REPL history 71 | .node_repl_history 72 | 73 | # Output of 'npm pack' 74 | *.tgz 75 | 76 | # Yarn Integrity file 77 | .yarn-integrity 78 | 79 | # dotenv environment variables file 80 | .env 81 | 82 | 83 | ### OSX ### 84 | *.DS_Store 85 | .AppleDouble 86 | .LSOverride 87 | 88 | # Icon must end with two \r 89 | Icon 90 | 91 | # Thumbnails 92 | ._* 93 | 94 | # Files that might appear in the root of a volume 95 | .DocumentRevisions-V100 96 | .fseventsd 97 | .Spotlight-V100 98 | .TemporaryItems 99 | .Trashes 100 | .VolumeIcon.icns 101 | .com.apple.timemachine.donotpresent 102 | 103 | # Directories potentially created on remote AFP share 104 | .AppleDB 105 | .AppleDesktop 106 | Network Trash Folder 107 | Temporary Items 108 | .apdisk 109 | 110 | ### Windows ### 111 | # Windows thumbnail cache files 112 | Thumbs.db 113 | ehthumbs.db 114 | ehthumbs_vista.db 115 | 116 | # Folder config file 117 | Desktop.ini 118 | 119 | # Recycle Bin used on file shares 120 | $RECYCLE.BIN/ 121 | 122 | # Windows Installer files 123 | *.cab 124 | *.msi 125 | *.msm 126 | *.msp 127 | 128 | # Windows shortcuts 129 | *.lnk 130 | 131 | 132 | # End of https://www.gitignore.io/api/osx,node,linux,windows 133 | 134 | .idea 135 | -------------------------------------------------------------------------------- /Commands.md: -------------------------------------------------------------------------------- 1 | Some helpful commands for reference when building and deploying: 2 | 3 | Package 4 | 5 | ``` 6 | sam package --template template.yaml --output-template packaged.yaml --s3-bucket raviserverlessrepo 7 | ``` 8 | 9 | Deploy 10 | 11 | ``` 12 | sam deploy --template-file ./packaged.yaml --stack-name myserverlesssearchstack--capabilities CAPABILITY_IAM --parameter-overrides TargetBucket=serverless-search-demo 13 | ``` 14 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Raviteja Lingineni 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Lambda Serverless Search 2 | 3 | I love elasticsearch. I love serverless functions. But I love serverless functions more because they're cheaper to run. The purpose of this project is to allow the benefits of free text searching but work and scale at the most minimal cost. 4 | 5 | The search algorithm powering the system is [lunrjs](http://lunrjs.com). 6 | 7 | #### Limitations 8 | Remember, this is a poorman's elastic search. 9 | 10 | - Great for exposing search for sets of new data and existing data 11 | - You only get the index id, not the entire document 12 | - Use as a lite api before migrating to a full scale search solution 13 | - More documents can mean slower performance - how much? Below I've noted my [performance](#performance) observations 14 | - AWS Lambda Memory requirements might need to be updated as per dataset 15 | - This is not a database, it is a search service. You will get results with the reference id only, not the entire document. 16 | 17 | ### AWS Components 18 | - S3 19 | - Lambda (256mb) 20 | - API Gateway 21 | 22 | ## Getting Started 23 | 24 | You may head over to the [Serverless Application Repository](https://serverlessrepo.aws.amazon.com/#/applications/arn:aws:serverlessrepo:us-east-1:939884077921:applications~serverless-search) and deploy the service. 25 | 26 | You will have to provide two parameters when you deploy: 27 | 28 | `TargetBucket` - The Name of S3 Bucket that should be created, this is where all the documents will sit 29 | > Note: remember the S3 bucket naming conventions, only lowercase and alphanumberic 30 | 31 | `InternalAPIKey` - This API Key is a secret string. Do not share this key with anyone, it will allow you to change your index configuration 32 | 33 | You may test the API in postman. Be sure to update the BaseURL. Read below for route docs and design. 34 | 35 | [![Run in Postman](https://run.pstmn.io/button.svg)](https://app.getpostman.com/run-collection/1e7621630073333b2697) 36 | 37 | After deploying here are somethings you might want to: 38 | - Change the default internal API key 39 | - Add Auth to your routes to restrict access 40 | 41 | 42 | ### Design 43 | 44 | ![alt text](https://github.com/rlingineni/Lambda-Serverless-Search/blob/master/imgs/Architecture.png) 45 | 46 | ## API Routes 47 | 48 | After you deploy, you will end up with a base URL: 49 | 50 | `https://${myapi}.execute-api.amazonaws.com/Prod/` 51 | 52 | ------------------- 53 | ### POST /internal/config 54 | Creates an Index(s) for the articles. You may update this whenever you want to. 55 | 56 | 57 | | body parameters | definition | 58 | | ------------- | ------------- | 59 | | `apikey` | An Internal Auth String to only let people with access make a request. Keep this secret, don't make this request from a client | 60 | | `config` | Array of index config objects. See below table| 61 | 62 | **Config Body** 63 | 64 | | body parameters | definition | required| 65 | | ------------- | ------------- |------------- 66 | | `fields` | Array of strings with the name of attributes that are to be indexed in document| `yes`| 67 | | `name` | The name of the index| `yes`| 68 | | `ref` | The ref is one field that will be returned. Most people use an ID, that they can later lookup in a DB or other store|`yes`| 69 | | `shards` |This value sets the number of records per index. If individual documents are large in size, then you want smaller shards. By default, an index is sharded at 2000 shards |`no`| 70 | 71 | ##### Input 72 | ```javascript 73 | { 74 | "apikey":"supersecretkey", 75 | "configs":[ 76 | { 77 | "name":"movies", 78 | "fields":["title","year","director","year","genre","tldr"], 79 | "ref": "id", 80 | "shards": 1000 81 | }, 82 | { "name":"movies-title", 83 | "fields":["title","year","director","year","genre","tldr"], 84 | "ref": "title" 85 | } 86 | ] 87 | 88 | } 89 | ``` 90 | ##### Response 91 | ``` 92 | { 93 | "msg":"Index Config Updated" 94 | } 95 | ``` 96 | ------------------- 97 | 98 | ### POST /add 99 | Adds a new article to search, you may upload either an array, or a single object 100 | ##### Input 101 | ```javascript 102 | [ 103 | { 104 | "id":"112233", 105 | "title": "Titanic", 106 | "year": 1997, 107 | "director": "Steven Spielberg", 108 | "genre": "Romance", 109 | "tldr": "An Amazing love story" 110 | }, 111 | { 112 | "id":"115566", 113 | "title": "Shawshank Redemption", 114 | "year": 1994, 115 | "director": "Frank Darabont", 116 | "genre": "Misc.", 117 | "tldr": "Story of friendship" 118 | } 119 | 120 | ] 121 | ``` 122 | ##### Response 123 | ``` 124 | { 125 | "msg":"Article Added" 126 | } 127 | ``` 128 | 129 | ------------------- 130 | 131 | ### GET /search 132 | Searches all the articles 133 | 134 | ##### Input 135 | | query parameters |required| definition | Example| 136 | | ------------- | ------------- |---------|------| 137 | | `q` |yes |query string to be searched | `/Prod/search?q=titan&index=movies` | 138 | | `index` | yes|index to be used | `/Prod/search?q=get&index=movies` | 139 | | `count` | no|count of search result to return. **Default:** 25 | `/Prod/search?q=get&index=movies&count=50` | 140 | 141 | Both parameters are required. 142 | 143 | You may tweak the search algorithm [here](https://github.com/rlingineni/Lambda-Serverless-Search/blob/2099d87854b4c7f23eced3214a3141ef66bef95d/document_search/app.js#L173). LunrJS [docs](https://lunrjs.com/guides/searching.html) will also help. 144 | ##### Response 145 | ``` 146 | [ 147 | { 148 | "ref": "112233", 149 | "score": 1.992, 150 | "matchData": { 151 | "metadata": { 152 | "titan": { 153 | "title": {} 154 | } 155 | } 156 | } 157 | } 158 | ] 159 | ``` 160 | 161 | ------------------- 162 | 163 | ### GET /internal/config 164 | Return the schema that is being used to index the documents 165 | 166 | ##### Response 167 | ``` 168 | { 169 | "fields":["title","year","director","year","genre","tldr"], 170 | "ref": "id" 171 | } 172 | ``` 173 | 174 | ------------------- 175 | ## Performance 176 | Here are some graphs on performance that I have done. It's not going to win any races, or even come close to algolia or elasticsearch. The real killer is network latency which is a non-negotiable ~2s depending on the index size. There might be a better way to query it with Athena that might speed things along. 177 | 178 | ![alt text](https://github.com/rlingineni/Lambda-Serverless-Search/blob/master/imgs/indexing-latency.png) 179 | 180 | Lambda memory allocation has a huge impact! 181 | 182 | ![alt text](https://github.com/rlingineni/Lambda-Serverless-Search/blob/master/imgs/query-latency.png) 183 | 184 | ### DocumentSearchFunction: 185 | - All search indexes are loaded in parallel to improve concurrency 186 | - The higher the memory for a Lambda function, the more the compute power, hence faster index searching. (you can see up to **75% increase** in speed), just adjust the slider. 187 | 188 | ### DocumentIndexingFunction: 189 | - The lower the number of *individual* articles, the faster the indexing time 190 | - You may see my `scale test` folder in the code above. It checks how long it takes to see a record appear in the results after it's uploaded. Latency of indexing operations degrades to about 30X over the course of 12K records. 191 | - Bulk uploads tend to decrease the amount of time 192 | - The higher the memory for a Lambda function, the more the compute power, hence faster index building 193 | 194 | 195 | 196 | ### Next Steps, Optimizations and Future 197 | 198 | - Add pagination for large sets of results 199 | - Upload Index directly to the Lambda Function (this would radically improve performance) 200 | - Update to get all S3 Articles and Content via AWS Athena 201 | - Use Cloudfront with S3 to cache the index document 202 | - Add Cache to keep track of most popular results in order to dynamically perform result boosts 203 | 204 | 205 | -------------------------------------------------------------------------------- /Serverless-Search-Details.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rlingineni/Lambda-Serverless-Search/31610ccebfb4c21d2248db2128b3d1fc9bc638c7/Serverless-Search-Details.pptx -------------------------------------------------------------------------------- /document_batch/app.js: -------------------------------------------------------------------------------- 1 | const AWS = require("aws-sdk"); 2 | const AWSHelper = require("aws-functions"); 3 | const s3 = new AWS.S3(); 4 | let BUCKET_NAME, IndexConfig; 5 | 6 | exports.lambdaHandler = async (event, context) => { 7 | BUCKET_NAME = process.env.BUCKET_NAME; 8 | 9 | //fetch previous cache of documents 10 | let AllArticles = []; 11 | 12 | //fetch every document uploaded to S3 in articles folder 13 | let listOfDocuments = await AWSHelper.listObjects(BUCKET_NAME, "articles/"); 14 | if (listOfDocuments.length <= 5) { 15 | console.log("No batching operation needed, too few items"); 16 | return "No need to batch"; 17 | } 18 | console.log("Got articles list ..."); 19 | let listOfDocumentPromises = []; 20 | for (var documentName of listOfDocuments) { 21 | listOfDocumentPromises.push(AWSHelper.getJSONFile(BUCKET_NAME, documentName, true)); 22 | } 23 | 24 | let PromiseResults = await Promise.all(listOfDocumentPromises); 25 | for (var result of PromiseResults) { 26 | if (result != null) { 27 | let isArray = Array.isArray(result); 28 | if (isArray) { 29 | AllArticles = AllArticles.concat(result); 30 | } else { 31 | AllArticles.push(result); 32 | } 33 | //mark for deletion 34 | await AWSHelper.deleteFromS3(BUCKET_NAME, result.s3key); 35 | } 36 | } 37 | 38 | console.log("marked " + AllArticles.length + "articles for deletion"); 39 | if (AllArticles.length > 0) { 40 | //upload a batched document to S3 41 | let DocumentName = "batched-" + Date.now(); 42 | console.log("Batched as " + documentName); 43 | await AWSHelper.uploadToS3(BUCKET_NAME, "articles/" + DocumentName + ".json", JSON.stringify(AllArticles)); 44 | } 45 | }; 46 | -------------------------------------------------------------------------------- /document_batch/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "requires": true, 3 | "lockfileVersion": 1, 4 | "dependencies": { 5 | "aws-functions": { 6 | "version": "1.0.2", 7 | "resolved": "https://registry.npmjs.org/aws-functions/-/aws-functions-1.0.2.tgz", 8 | "integrity": "sha512-pchlK66rzTPzKXqnsVhK7R5t9r/629z4n2FyADQjV5hiZpyhwopc4nQI2+lb+IZMOKfZYdNpcuyMGSrHlJ1Exg==" 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /document_indexer/app.js: -------------------------------------------------------------------------------- 1 | const lunr = require("lunr"); 2 | const AWS = require("aws-sdk"); 3 | const AWSHelper = require("aws-functions"); 4 | const s3 = new AWS.S3(); 5 | let BUCKET_NAME, IndexConfig; 6 | 7 | exports.lambdaHandler = async (event, context) => { 8 | BUCKET_NAME = process.env.BUCKET_NAME; 9 | 10 | let AddedItem = event.Records[0].s3.object.key; 11 | 12 | //no need to index anything that hasn't been added to articles 13 | if (!AddedItem.startsWith("articles/")) { 14 | return "Skipping the addition of a non-article"; 15 | } 16 | 17 | //fetch index configuration from S3 18 | IndexConfig = await AWSHelper.getJSONFile(BUCKET_NAME, "search_config.json"); 19 | if (IndexConfig == null) { 20 | return "Please set the Search Index Configuration before adding documents"; 21 | } 22 | 23 | //fetch previous cache of documents 24 | let AllArticles = []; 25 | 26 | //fetch every document uploaded to S3 in articles folder 27 | let listOfDocuments = await AWSHelper.listObjects(BUCKET_NAME, "articles/"); 28 | console.log("Got articles list ..."); 29 | let listOfDocumentPromises = []; 30 | for (var documentName of listOfDocuments) { 31 | listOfDocumentPromises.push(AWSHelper.getJSONFile(BUCKET_NAME, documentName)); 32 | } 33 | 34 | let PromiseResults = await Promise.all(listOfDocumentPromises); 35 | for (var result of PromiseResults) { 36 | if (result != null) { 37 | let isArray = Array.isArray(result); 38 | if (isArray) { 39 | AllArticles = AllArticles.concat(result); 40 | } else { 41 | AllArticles.push(result); 42 | } 43 | } 44 | } 45 | 46 | let IndexUploadPromiseArray = []; 47 | //make indexes and upload them 48 | for (var config of IndexConfig.configs) { 49 | let ShardSize = config.shards || 1000; 50 | let shardedArray = ShardArray(AllArticles, ShardSize); 51 | 52 | let indexCount = 1; 53 | for (var articles of shardedArray) { 54 | //build the index up for each shard and upload new index 55 | var index = lunr(function() { 56 | for (var field of config.fields) { 57 | this.field(field); 58 | } 59 | 60 | this.ref(config.ref); 61 | articles.forEach(function(article) { 62 | this.add(article); 63 | }, this); 64 | }); 65 | 66 | //upload JSON Indexes in Parallel 67 | IndexUploadPromiseArray.push( 68 | AWSHelper.uploadToS3(BUCKET_NAME, "indexes/" + config.name + "/search_index_" + indexCount + ".json", JSON.stringify(index)) 69 | ); 70 | console.log("Uploaded index: " + config.name + "_" + indexCount); 71 | indexCount++; 72 | } 73 | } 74 | 75 | try { 76 | await Promise.all(IndexUploadPromiseArray); 77 | } catch (e) { 78 | console.log("Something went wrong: ", e); 79 | } 80 | 81 | /* 82 | Keep all articles document for reference, we will not necessarily use it 83 | */ 84 | //update "alldocs.json" 85 | await AWSHelper.uploadToS3(BUCKET_NAME, "articles_all.json", JSON.stringify(AllArticles)); 86 | console.log("Uploaded all articles back!"); 87 | }; 88 | 89 | function ShardArray(allitems, chunk_size) { 90 | var arrays = []; 91 | 92 | let StartIndex = 0; 93 | while (StartIndex <= allitems.length) { 94 | arrays.push(allitems.slice(StartIndex, StartIndex + chunk_size)); 95 | StartIndex += chunk_size; 96 | } 97 | 98 | return arrays; 99 | } 100 | -------------------------------------------------------------------------------- /document_indexer/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "document_indexer", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "aws-functions": { 8 | "version": "1.0.2", 9 | "resolved": "https://registry.npmjs.org/aws-functions/-/aws-functions-1.0.2.tgz", 10 | "integrity": "sha512-pchlK66rzTPzKXqnsVhK7R5t9r/629z4n2FyADQjV5hiZpyhwopc4nQI2+lb+IZMOKfZYdNpcuyMGSrHlJ1Exg==" 11 | }, 12 | "lunr": { 13 | "version": "2.3.3", 14 | "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.3.tgz", 15 | "integrity": "sha512-rlAEsgU9Bnavca2w1WJ6+6cdeHMXNyadcersyk3ZpuhgWb5HBNj8l4WwJz9PjksAhYDlpQffCVXPctOn+wCIVA==" 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /document_indexer/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "document_indexer", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "app.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "dependencies": { 12 | "aws-functions": "^1.0.2", 13 | "lunr": "^2.3.3" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /document_search/app.js: -------------------------------------------------------------------------------- 1 | const lunr = require("lunr"); 2 | const fs = require("fs"); 3 | const AWS = require("aws-sdk"); 4 | const AWSHelper = require("aws-functions"); 5 | const s3 = new AWS.S3(); 6 | let Validator = require("jsonschema").Validator; 7 | let v = new Validator(); 8 | const SearchConfigSchema = { 9 | id: "/SearchConfig", 10 | type: "object", 11 | properties: { 12 | fields: { 13 | type: "array", 14 | items: { type: "string" } 15 | }, 16 | ref: { type: "string" }, 17 | name: { type: "string" } 18 | }, 19 | required: ["fields", "ref", "name"] 20 | }; 21 | 22 | let BUCKET_NAME, API_KEY; 23 | /** 24 | * 25 | * Event doc: https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html#api-gateway-simple-proxy-for-lambda-input-format 26 | * @param {Object} event - API Gateway Lambda Proxy Input Format 27 | * @param {string} event.resource - Resource path. 28 | * @param {string} event.path - Path parameter. 29 | * @param {string} event.httpMethod - Incoming request's method name. 30 | * @param {Object} event.headers - Incoming request headers. 31 | * @param {Object} event.queryStringParameters - query string parameters. 32 | * @param {Object} event.pathParameters - path parameters. 33 | * @param {Object} event.stageVariables - Applicable stage variables. 34 | * @param {Object} event.requestContext - Request context, including authorizer-returned key-value pairs, requestId, sourceIp, etc. 35 | * @param {Object} event.body - A JSON string of the request payload. 36 | * @param {boolean} event.body.isBase64Encoded - A boolean flag to indicate if the applicable request payload is Base64-encode 37 | * 38 | * Context doc: https://docs.aws.amazon.com/lambda/latest/dg/nodejs-prog-model-context.html 39 | * @param {Object} context 40 | * @param {string} context.logGroupName - Cloudwatch Log Group name 41 | * @param {string} context.logStreamName - Cloudwatch Log stream name. 42 | * @param {string} context.functionName - Lambda function name. 43 | * @param {string} context.memoryLimitInMB - Function memory. 44 | * @param {string} context.functionVersion - Function version identifier. 45 | * @param {function} context.getRemainingTimeInMillis - Time in milliseconds before function times out. 46 | * @param {string} context.awsRequestId - Lambda request ID. 47 | * @param {string} context.invokedFunctionArn - Function ARN. 48 | * 49 | * Return doc: https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html 50 | * @returns {Object} object - API Gateway Lambda Proxy Output Format 51 | * @returns {boolean} object.isBase64Encoded - A boolean flag to indicate if the applicable payload is Base64-encode (binary support) 52 | * @returns {string} object.statusCode - HTTP Status Code to be returned to the client 53 | * @returns {Object} object.headers - HTTP Headers to be returned 54 | * @returns {Object} object.body - JSON Payload to be returned 55 | * 56 | */ 57 | exports.lambdaHandler = async (event, context) => { 58 | BUCKET_NAME = process.env.BUCKET_NAME; 59 | API_KEY = process.env.INTERNAL_API_KEY; 60 | 61 | let path = event.path; 62 | let method = event.httpMethod; 63 | try { 64 | switch (path) { 65 | case "/search": 66 | let query = event.queryStringParameters.q; 67 | let count = event.queryStringParameters.count || 25; 68 | let index = event.queryStringParameters.index; 69 | return await SearchForDocument(query, count, index); 70 | case "/add": 71 | switch (event.httpMethod) { 72 | case "POST": 73 | let document = JSON.parse(event.body); 74 | return await UploadArticle(document); 75 | } 76 | case "/internal/config": 77 | switch (event.httpMethod) { 78 | case "POST": 79 | let config = JSON.parse(event.body); 80 | return await UpdateConfigDocument(config); 81 | case "GET": 82 | return await GetConfigDocument(); 83 | } 84 | default: 85 | return BuildResponse(400, "Not a valid path, or you don't have access to it", false); 86 | } 87 | } catch (e) { 88 | console.log("ERROR", e); 89 | return BuildResponse(500, "An unexpected error occured, please check your input or search logs"); 90 | } 91 | }; 92 | 93 | async function GetConfigDocument() { 94 | //fetch previous cache of documents 95 | try { 96 | let configs = await AWSHelper.getJSONFile(BUCKET_NAME, "search_config.json"); 97 | return BuildResponse(200, configs, true); 98 | } catch (err) { 99 | console.log(err.message); 100 | console.log("Search Config does not exist!"); 101 | return BuildResponse(400, "No search configuration exists. You must upload one"); 102 | } 103 | } 104 | 105 | async function UpdateConfigDocument(SearchConfig) { 106 | if (!SearchConfig.apikey || SearchConfig.apikey != API_KEY) { 107 | return BuildResponse(401, "You may not update the config"); 108 | } 109 | if (!SearchConfig.configs) { 110 | return BuildResponse(400, "Missing List of Index Configurations"); 111 | } 112 | for (var index of SearchConfig.configs) { 113 | let schemaCheck = v.validate(index, SearchConfigSchema); 114 | if (!isValidIndexName(index.name)) { 115 | return BuildResponse(400, "Invalid Index Name. Names must be one-word and lowercase: " + index.name); 116 | } 117 | console.log(schemaCheck); 118 | if (schemaCheck["errors"] && schemaCheck.errors.length > 0) { 119 | console.log("Cannot Upload Document, Search config invalid!"); 120 | let listOfMessages = []; 121 | for (var err of schemaCheck.errors) { 122 | listOfMessages.push(err.stack); 123 | } 124 | return BuildResponse(400, "Invalid Search Index Schema: " + listOfMessages); 125 | } 126 | } 127 | 128 | //add to S3 Bucket 129 | try { 130 | await AWSHelper.uploadToS3(BUCKET_NAME, "search_config.json", JSON.stringify(SearchConfig)); 131 | console.log("Uploaded search configuration for: " + index.name); 132 | return BuildResponse(200, "Index Config Updated"); 133 | } catch (err) { 134 | console.log(err); 135 | return BuildResponse(400, "Uploading Configuration Failed. Please check logs"); 136 | } 137 | } 138 | 139 | async function UploadArticle(document) { 140 | //add to S3 Bucket 141 | var params = { 142 | Bucket: BUCKET_NAME, 143 | Key: "articles/" + Date.now() + ".json", 144 | Body: JSON.stringify(document) 145 | }; 146 | 147 | try { 148 | await s3.putObject(params).promise(); 149 | return BuildResponse(200, "Article Added"); 150 | } catch (err) { 151 | console.log(err); 152 | return BuildResponse(400, "Upload Article Failed"); 153 | } 154 | } 155 | 156 | async function SearchForDocument(query, numValues = 25, indexName) { 157 | console.log("Searching Index for ", query); 158 | if (!indexName || !isValidIndexName(indexName)) { 159 | return BuildResponse(400, "Invalid Index Name Provided"); 160 | } 161 | console.log("Got Request.."); 162 | let SearchResults = []; 163 | 164 | //Load Multiple Indexes from S3 165 | try { 166 | //Fetch all available shards 167 | let listOfShards = await AWSHelper.listObjects(BUCKET_NAME, "indexes/" + indexName + "/"); 168 | console.log("Received List of Shards..."); 169 | let listOfDocumentPromises = []; 170 | for (var documentName of listOfShards) { 171 | listOfDocumentPromises.push(AWSHelper.getJSONFile(BUCKET_NAME, documentName)); 172 | } 173 | 174 | try { 175 | let allIndexes = await Promise.all(listOfDocumentPromises); 176 | console.log("Got all Indexes..."); 177 | for (var index of allIndexes) { 178 | if (index != null) { 179 | SearchResults = SearchResults.concat(GetSearchResults(index, query, numValues)); 180 | } else { 181 | return BuildResponse(500, "Something went wrong while trying to query the index..."); 182 | } 183 | } 184 | console.log("Got search results..."); 185 | } catch (err) { 186 | console.log("Something went wrong while querying the index", err); 187 | return BuildResponse(500, "Something went wrong while trying to query the index..."); 188 | } 189 | 190 | SearchResults.sort(function(hitA, hitB) { 191 | return hitB.score - hitA.score; 192 | }); 193 | 194 | console.log("Sending sorted results", SearchResults); 195 | 196 | return BuildResponse(200, SearchResults.slice(0, numValues), true); 197 | } catch (err) { 198 | console.log("No Search Index was found"); 199 | console.log(err.message); 200 | return BuildResponse(412, "No Search Index was found, or it was invalid. Make sure you have uploaded a index config first."); 201 | } 202 | } 203 | 204 | function GetSearchResults(searchIndex, query, numValues) { 205 | //load the index to lunr 206 | let index = lunr.Index.load(searchIndex); 207 | //perform 208 | let results = index.query(function() { 209 | // exact matches should have the highest boost 210 | this.term(lunr.tokenizer(query), { boost: 100 }); 211 | 212 | // prefix matches should be boosted slightly 213 | this.term(query, { boost: 10, usePipeline: false, wildcard: lunr.Query.wildcard.TRAILING }); 214 | 215 | // finally, try a fuzzy search with character 2, without any boost 216 | this.term(query, { boost: 5, usePipeline: false, editDistance: 2 }); 217 | }); 218 | return results.slice(0, numValues); 219 | } 220 | 221 | function BuildResponse(statusCode, responseBody, shouldStringify = false) { 222 | let body = "invalid response"; 223 | if (shouldStringify) { 224 | body = JSON.stringify(responseBody); 225 | } else { 226 | body = JSON.stringify({ msg: responseBody }); 227 | } 228 | 229 | let response = { 230 | statusCode, 231 | body 232 | }; 233 | 234 | return response; 235 | } 236 | 237 | function isValidIndexName(str) { 238 | if (str) { 239 | var re = /^[a-z-]+$/g; 240 | return re.test(str); 241 | } 242 | 243 | return false; 244 | } 245 | -------------------------------------------------------------------------------- /document_search/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hello_world", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "assertion-error": { 8 | "version": "1.1.0", 9 | "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", 10 | "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", 11 | "dev": true 12 | }, 13 | "aws-functions": { 14 | "version": "1.0.2", 15 | "resolved": "https://registry.npmjs.org/aws-functions/-/aws-functions-1.0.2.tgz", 16 | "integrity": "sha512-pchlK66rzTPzKXqnsVhK7R5t9r/629z4n2FyADQjV5hiZpyhwopc4nQI2+lb+IZMOKfZYdNpcuyMGSrHlJ1Exg==" 17 | }, 18 | "balanced-match": { 19 | "version": "1.0.0", 20 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 21 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 22 | "dev": true 23 | }, 24 | "brace-expansion": { 25 | "version": "1.1.11", 26 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 27 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 28 | "dev": true, 29 | "requires": { 30 | "balanced-match": "1.0.0", 31 | "concat-map": "0.0.1" 32 | } 33 | }, 34 | "browser-stdout": { 35 | "version": "1.3.1", 36 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", 37 | "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", 38 | "dev": true 39 | }, 40 | "chai": { 41 | "version": "4.2.0", 42 | "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", 43 | "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", 44 | "dev": true, 45 | "requires": { 46 | "assertion-error": "1.1.0", 47 | "check-error": "1.0.2", 48 | "deep-eql": "3.0.1", 49 | "get-func-name": "2.0.0", 50 | "pathval": "1.1.0", 51 | "type-detect": "4.0.8" 52 | } 53 | }, 54 | "check-error": { 55 | "version": "1.0.2", 56 | "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", 57 | "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", 58 | "dev": true 59 | }, 60 | "commander": { 61 | "version": "2.15.1", 62 | "resolved": "http://registry.npmjs.org/commander/-/commander-2.15.1.tgz", 63 | "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", 64 | "dev": true 65 | }, 66 | "concat-map": { 67 | "version": "0.0.1", 68 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 69 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 70 | "dev": true 71 | }, 72 | "debug": { 73 | "version": "3.1.0", 74 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", 75 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", 76 | "dev": true, 77 | "requires": { 78 | "ms": "2.0.0" 79 | } 80 | }, 81 | "deep-eql": { 82 | "version": "3.0.1", 83 | "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", 84 | "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", 85 | "dev": true, 86 | "requires": { 87 | "type-detect": "4.0.8" 88 | } 89 | }, 90 | "diff": { 91 | "version": "3.5.0", 92 | "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", 93 | "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", 94 | "dev": true 95 | }, 96 | "escape-string-regexp": { 97 | "version": "1.0.5", 98 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 99 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 100 | "dev": true 101 | }, 102 | "fs.realpath": { 103 | "version": "1.0.0", 104 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 105 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 106 | "dev": true 107 | }, 108 | "get-func-name": { 109 | "version": "2.0.0", 110 | "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", 111 | "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", 112 | "dev": true 113 | }, 114 | "glob": { 115 | "version": "7.1.2", 116 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", 117 | "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", 118 | "dev": true, 119 | "requires": { 120 | "fs.realpath": "1.0.0", 121 | "inflight": "1.0.6", 122 | "inherits": "2.0.3", 123 | "minimatch": "3.0.4", 124 | "once": "1.4.0", 125 | "path-is-absolute": "1.0.1" 126 | } 127 | }, 128 | "growl": { 129 | "version": "1.10.5", 130 | "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", 131 | "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", 132 | "dev": true 133 | }, 134 | "has-flag": { 135 | "version": "3.0.0", 136 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 137 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 138 | "dev": true 139 | }, 140 | "he": { 141 | "version": "1.1.1", 142 | "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", 143 | "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", 144 | "dev": true 145 | }, 146 | "inflight": { 147 | "version": "1.0.6", 148 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 149 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 150 | "dev": true, 151 | "requires": { 152 | "once": "1.4.0", 153 | "wrappy": "1.0.2" 154 | } 155 | }, 156 | "inherits": { 157 | "version": "2.0.3", 158 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 159 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 160 | "dev": true 161 | }, 162 | "jsonschema": { 163 | "version": "1.2.4", 164 | "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.2.4.tgz", 165 | "integrity": "sha512-lz1nOH69GbsVHeVgEdvyavc/33oymY1AZwtePMiMj4HZPMbP5OIKK3zT9INMWjwua/V4Z4yq7wSlBbSG+g4AEw==" 166 | }, 167 | "lunr": { 168 | "version": "2.3.3", 169 | "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.3.tgz", 170 | "integrity": "sha512-rlAEsgU9Bnavca2w1WJ6+6cdeHMXNyadcersyk3ZpuhgWb5HBNj8l4WwJz9PjksAhYDlpQffCVXPctOn+wCIVA==" 171 | }, 172 | "minimatch": { 173 | "version": "3.0.4", 174 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 175 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 176 | "dev": true, 177 | "requires": { 178 | "brace-expansion": "1.1.11" 179 | } 180 | }, 181 | "minimist": { 182 | "version": "0.0.8", 183 | "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 184 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", 185 | "dev": true 186 | }, 187 | "mkdirp": { 188 | "version": "0.5.1", 189 | "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 190 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 191 | "dev": true, 192 | "requires": { 193 | "minimist": "0.0.8" 194 | } 195 | }, 196 | "mocha": { 197 | "version": "5.2.0", 198 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", 199 | "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", 200 | "dev": true, 201 | "requires": { 202 | "browser-stdout": "1.3.1", 203 | "commander": "2.15.1", 204 | "debug": "3.1.0", 205 | "diff": "3.5.0", 206 | "escape-string-regexp": "1.0.5", 207 | "glob": "7.1.2", 208 | "growl": "1.10.5", 209 | "he": "1.1.1", 210 | "minimatch": "3.0.4", 211 | "mkdirp": "0.5.1", 212 | "supports-color": "5.4.0" 213 | } 214 | }, 215 | "ms": { 216 | "version": "2.0.0", 217 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 218 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 219 | "dev": true 220 | }, 221 | "once": { 222 | "version": "1.4.0", 223 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 224 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 225 | "dev": true, 226 | "requires": { 227 | "wrappy": "1.0.2" 228 | } 229 | }, 230 | "path-is-absolute": { 231 | "version": "1.0.1", 232 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 233 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 234 | "dev": true 235 | }, 236 | "pathval": { 237 | "version": "1.1.0", 238 | "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", 239 | "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", 240 | "dev": true 241 | }, 242 | "supports-color": { 243 | "version": "5.4.0", 244 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", 245 | "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", 246 | "dev": true, 247 | "requires": { 248 | "has-flag": "3.0.0" 249 | } 250 | }, 251 | "type-detect": { 252 | "version": "4.0.8", 253 | "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", 254 | "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", 255 | "dev": true 256 | }, 257 | "wrappy": { 258 | "version": "1.0.2", 259 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 260 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 261 | "dev": true 262 | } 263 | } 264 | } 265 | -------------------------------------------------------------------------------- /document_search/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hello_world", 3 | "version": "1.0.0", 4 | "description": "document free text search for serverless applications", 5 | "main": "app.js", 6 | "repository": "https://github.com/awslabs/aws-sam-cli/tree/develop/samcli/local/init/templates/cookiecutter-aws-sam-hello-nodejs", 7 | "author": "SAM CLI", 8 | "license": "MIT", 9 | "dependencies": { 10 | "aws-functions": "^1.0.2", 11 | "jsonschema": "^1.2.4", 12 | "lunr": "^2.3.3" 13 | }, 14 | "scripts": { 15 | "test": "mocha tests/unit/" 16 | }, 17 | "devDependencies": { 18 | "chai": "^4.2.0", 19 | "mocha": "^5.1.1" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /imgs/Architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rlingineni/Lambda-Serverless-Search/31610ccebfb4c21d2248db2128b3d1fc9bc638c7/imgs/Architecture.png -------------------------------------------------------------------------------- /imgs/indexing-latency.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rlingineni/Lambda-Serverless-Search/31610ccebfb4c21d2248db2128b3d1fc9bc638c7/imgs/indexing-latency.png -------------------------------------------------------------------------------- /imgs/query-latency.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rlingineni/Lambda-Serverless-Search/31610ccebfb4c21d2248db2128b3d1fc9bc638c7/imgs/query-latency.png -------------------------------------------------------------------------------- /sample-indexer/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "exampleindex", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "elasticlunr": { 8 | "version": "0.9.5", 9 | "resolved": "https://registry.npmjs.org/elasticlunr/-/elasticlunr-0.9.5.tgz", 10 | "integrity": "sha1-ZVQbswnd3Qz5Ty0ciGGyvmUbsNU=" 11 | }, 12 | "lunr": { 13 | "version": "2.3.3", 14 | "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.3.tgz", 15 | "integrity": "sha512-rlAEsgU9Bnavca2w1WJ6+6cdeHMXNyadcersyk3ZpuhgWb5HBNj8l4WwJz9PjksAhYDlpQffCVXPctOn+wCIVA==" 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /sample-indexer/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "exampleindex", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "sampleindexbuilder.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "dependencies": {} 12 | } 13 | -------------------------------------------------------------------------------- /sample-indexer/sampleindexbuilder.js: -------------------------------------------------------------------------------- 1 | const fs = require("fs"); 2 | //const elasticlunr = require("elasticlunr"); 3 | const elasticlunr = require("lunr"); 4 | 5 | const loadFromIndex = false; 6 | console.time(); 7 | 8 | if (!loadFromIndex) { 9 | // First I want to read original file 10 | fs.readFile("../movies.json", function read(err, data) { 11 | if (err) { 12 | throw err; 13 | } 14 | 15 | let listOfMovies = JSON.parse(data); 16 | console.log(listOfMovies.length); 17 | generateSearchIndex(listOfMovies); 18 | }); 19 | } else { 20 | fs.readFile("./movies_index.json", function read(err, data) { 21 | if (err) { 22 | throw err; 23 | } 24 | var indexDump = JSON.parse(data); 25 | let index = elasticlunr.Index.load(indexDump); 26 | console.log(index.search("Spielberg")); 27 | console.timeEnd(); 28 | }); 29 | } 30 | 31 | function generateSearchIndex(listOfMovies) { 32 | var index = elasticlunr(function() { 33 | this.field("title"); 34 | this.field("director"); 35 | this.field("year"); 36 | this.ref("id"); 37 | 38 | listOfMovies.forEach(function(movie) { 39 | movie.id = Date.now(); 40 | this.add(movie); 41 | }, this); 42 | }); 43 | 44 | let searchTerm = "spiel"; 45 | 46 | /*console.log( 47 | index.query(function(q) { 48 | // exact matches should have the highest boost 49 | q.term(searchTerm, { boost: 100 }); 50 | 51 | // prefix matches should be boosted slightly 52 | q.term(searchTerm, { boost: 10, usePipeline: false, wildcard: elasticlunr.Query.wildcard.TRAILING }); 53 | 54 | // finally, try a fuzzy search, without any boost 55 | q.term(searchTerm, { boost: 1, usePipeline: false, editDistance: 1 }); 56 | }) 57 | );*/ 58 | 59 | console.log(index.search("s")); 60 | console.timeEnd(); 61 | fs.writeFile("./movies_index.json", JSON.stringify(index), function(err) { 62 | if (err) throw err; 63 | console.log("done writing index"); 64 | }); 65 | } 66 | -------------------------------------------------------------------------------- /scale-test/main.js: -------------------------------------------------------------------------------- 1 | const fs = require("fs"); 2 | const alphanumeric = require("alphanumeric-id"); 3 | var rp = require("promise-request-retry"); 4 | 5 | let BaseURL = "https://hbmle8gyoc.execute-api.us-east-1.amazonaws.com"; 6 | 7 | fs.readFile("../movies.json", function read(err, data) { 8 | if (err) { 9 | throw err; 10 | } 11 | 12 | let listOfMovies = JSON.parse(data); 13 | console.log(listOfMovies.length); 14 | AddIDToListOfMovies(listOfMovies); 15 | console.log("Will perform test for " + listOfMovies.length + " Objects"); 16 | IncrementBatchAndQuery(listOfMovies, 1, 1); 17 | }); 18 | 19 | function AddIDToListOfMovies(listOfMovies) { 20 | for (var movie of listOfMovies) { 21 | movie.id = alphanumeric(8); 22 | } 23 | } 24 | 25 | function IncrementBatchAndQuery(listOfMovies, startBatchSize, incrementMultiplier) { 26 | IncrementBatchAndQueryHelper(listOfMovies, startBatchSize, 1, listOfMovies.length, 0, incrementMultiplier); 27 | } 28 | 29 | let indexedCount = 0; 30 | let numFails = 0; 31 | 32 | async function IncrementBatchAndQueryHelper( 33 | listOfMovies, 34 | batchSize, 35 | batchCounter, 36 | remainingMovies, 37 | continuationIndex, 38 | incrementMultiplier 39 | ) { 40 | //100 to amount for any request losses or failures 41 | if (indexedCount >= listOfMovies.length - numFails) { 42 | return; 43 | } 44 | 45 | //get the number of docs 46 | let moviesBatch = listOfMovies.slice(continuationIndex, continuationIndex + batchSize); 47 | let firstMovieID = moviesBatch[0].id; 48 | //increment the indexes for next run 49 | continuationIndex = continuationIndex + batchSize; 50 | 51 | //subtract the remaining movies 52 | remainingMovies = listOfMovies.length - continuationIndex - 1; 53 | 54 | //upload the documents 55 | var options = { 56 | method: "POST", 57 | uri: BaseURL + "/Prod/add", 58 | body: moviesBatch, 59 | json: true, 60 | resolveWithFullResponse: true, 61 | retry: 3 62 | }; 63 | 64 | try { 65 | let response = await rp(options); 66 | } catch (e) { 67 | console.log("Cannot Upload in Batch Count: " + batchCounter); 68 | console.log(e); 69 | throw e; 70 | } 71 | 72 | //keep querying and retrying till the index is able to get the the first record ID that was uploaded in the batch 73 | RetryTillSuccess(firstMovieID, batchCounter, 50, (responseTime, uploadedID, uploadIndex) => { 74 | let percentIndexed = Math.floor((uploadIndex / listOfMovies.length) * 100); 75 | //just to make sure logging as expected 76 | if (percentIndexed < 1) { 77 | console.log( 78 | "Indexed Article Num:" + 79 | uploadIndex + 80 | " (~" + 81 | percentIndexed + 82 | "% uploaded) " + 83 | "Response Time (ms): " + 84 | responseTime + 85 | " For: " + 86 | uploadedID 87 | ); 88 | } 89 | BuildPercentGraph(percentIndexed, responseTime, uploadedID, uploadIndex); 90 | indexedCount++; 91 | }); 92 | 93 | return IncrementBatchAndQueryHelper(listOfMovies, batchSize, batchCounter + 1, remainingMovies, continuationIndex, incrementMultiplier); 94 | } 95 | 96 | async function RetryTillSuccess(targetID, processId, retryMax, callback) { 97 | return _RetryTillSuccess(targetID, processId, 0, 1, retryMax, callback); 98 | } 99 | 100 | async function _RetryTillSuccess(targetID, processId, responseTime, retryCounter, retryMax, callback) { 101 | if (retryCounter == retryMax) { 102 | console.log("Note: Made 50 requests for " + targetID + " And Failed ... "); 103 | numFails++; 104 | callback(0, targetID + "[lost]", processId); 105 | return; 106 | } 107 | 108 | var options = { 109 | method: "GET", 110 | uri: BaseURL + "/Prod/search?" + "q=" + targetID + "&index=movies", 111 | resolveWithFullResponse: true, 112 | time: true 113 | }; 114 | 115 | let endingTime; //so that the catch block can see this also 116 | try { 117 | let response = await rp(options); 118 | let timings = response.request.timings; 119 | let endingTime = timings.end; 120 | let searchResults = JSON.parse(response.body); 121 | //check if response has the correct index 122 | if (searchResults.length > 0 && targetID === searchResults[0].ref) { 123 | callback(responseTime + timings.end, targetID, processId); 124 | } else { 125 | _RetryTillSuccess(targetID, processId, responseTime + timings.end, retryCounter + 1, retryMax, callback); 126 | } 127 | } catch (e) { 128 | //console.log("Request or error occured for " + processId + " " + targetID); 129 | _RetryTillSuccess(targetID, processId, responseTime + endingTime, retryCounter + 1, retryMax, callback); 130 | } 131 | } 132 | 133 | let PercentGraph = {}; 134 | function BuildPercentGraph(percentIndexed, responseTime, idAdded, uploadIndex) { 135 | previousIndex = (percentIndexed - 1).toString(); 136 | percentIndexed = percentIndexed.toString(); 137 | if (parseFloat(responseTime)) { 138 | responseTime = parseFloat(responseTime); 139 | } else { 140 | responseTime = 1000; 141 | } 142 | 143 | if (PercentGraph[percentIndexed]) { 144 | PercentGraph[percentIndexed].count = PercentGraph[percentIndexed].count + 1; 145 | PercentGraph[percentIndexed].ids.push(idAdded); 146 | PercentGraph[percentIndexed].totalTime = PercentGraph[percentIndexed].totalTime + responseTime; 147 | let average = PercentGraph[percentIndexed].totalTime / PercentGraph[percentIndexed].count; 148 | PercentGraph[percentIndexed].avg = average; 149 | } else { 150 | PercentGraph[percentIndexed] = { 151 | count: 1, 152 | totalTime: responseTime, 153 | avg: responseTime, 154 | ids: [idAdded] 155 | }; 156 | 157 | if (PercentGraph[previousIndex]) { 158 | console.log( 159 | previousIndex + 160 | "% complete and ~" + 161 | uploadIndex + 162 | " records indexed at an avg of " + 163 | PercentGraph[previousIndex].avg + 164 | " Ids: " + 165 | PercentGraph[previousIndex].ids.slice(0, 8) 166 | ); 167 | console.log(PercentGraph); 168 | } 169 | } 170 | } 171 | -------------------------------------------------------------------------------- /scale-test/movies-results/linear/movies - 1,1.txt: -------------------------------------------------------------------------------- 1 | Count: 1 Response Time (ms): 838.0042879999999 For: L4AYhn0j 2 | Count: 2 Response Time (ms): 1547.5132310000001 For: QTA0Yxnn 3 | Count: 3 Response Time (ms): 557.3080909999999 For: NvsIibJ1 4 | Count: 4 Response Time (ms): 595.1360909999994 For: 1KSb0FcD 5 | Count: 5 Response Time (ms): 868.2393919999995 For: nMOfbp5G 6 | Count: 6 Response Time (ms): 1061.090725000001 For: aDhI1RY3 7 | Count: 7 Response Time (ms): 1225.5076080000017 For: wDGJPupR 8 | Count: 8 Response Time (ms): 2446.671116999998 For: jCccE0BG 9 | Count: 9 Response Time (ms): 1380.5258740000027 For: DldlZywv 10 | -----------Batch Count Incremented to: 1----------------- 11 | -----------Articles Remaining: 18840----------------- 12 | Count: 1 Response Time (ms): 1647.4565169999987 For: ummbzOir 13 | Count: 2 Response Time (ms): 1354.1405059999997 For: xweawpqx 14 | Count: 3 Response Time (ms): 1083.1025390000032 For: smS5gb8f 15 | Count: 4 Response Time (ms): 805.1862499999952 For: TvSgINFc 16 | Count: 5 Response Time (ms): 1165.2486329999992 For: NfizYjla 17 | Count: 6 Response Time (ms): 1001.0187330000008 For: hux3riVs 18 | Count: 7 Response Time (ms): 1020.9275549999984 For: 6yXNtp8E 19 | Count: 8 Response Time (ms): 1081.4488630000014 For: Z0dPBu9w 20 | Count: 9 Response Time (ms): 1152.7164989999983 For: u656LJnJ 21 | -----------Batch Count Incremented to: 1----------------- 22 | -----------Articles Remaining: 18831----------------- 23 | Count: 1 Response Time (ms): 1470.9067040000045 For: 2pJ2gcdB 24 | Count: 2 Response Time (ms): 1045.2580090000047 For: p8I9z6PC 25 | Count: 3 Response Time (ms): 1205.572920999999 For: 9d4aTf3F 26 | Count: 4 Response Time (ms): 1097.7072199999966 For: n9W5ELak 27 | Count: 5 Response Time (ms): 1881.8048560000097 For: cC7QKRNd 28 | Count: 6 Response Time (ms): 4187.175882999989 For: eWaGUZc2 29 | Count: 7 Response Time (ms): 1504.5272980000009 For: 1R10J5mR 30 | Count: 8 Response Time (ms): 2841.9020819999932 For: JMJ4qkUK 31 | Count: 9 Response Time (ms): 1533.5038940000013 For: Fc1rn81O 32 | -----------Batch Count Incremented to: 1----------------- 33 | -----------Articles Remaining: 18822----------------- 34 | Count: 1 Response Time (ms): 1327.7358989999993 For: o3B4zUyf 35 | Count: 2 Response Time (ms): 1634.7867400000032 For: kt7bvWA8 36 | Count: 3 Response Time (ms): 1700.8026640000026 For: 9swPRU75 37 | Count: 4 Response Time (ms): 1492.5462560000087 For: cVAp67Fk 38 | Count: 5 Response Time (ms): 1378.496484999996 For: 63JytW4E 39 | Count: 6 Response Time (ms): 1535.778157000008 For: wzS5ewjg 40 | Count: 7 Response Time (ms): 1731.8481930000053 For: PTxy29yc 41 | Count: 8 Response Time (ms): 1479.6530710000006 For: BPbWgf5p 42 | Count: 9 Response Time (ms): 1872.4167229999948 For: 8DrlgPYz 43 | -----------Batch Count Incremented to: 1----------------- 44 | -----------Articles Remaining: 18813----------------- 45 | Count: 1 Response Time (ms): 2242.34537499999 For: h8vXqZTE 46 | Count: 2 Response Time (ms): 2721.9797760000074 For: i4Zp7NXN 47 | Count: 3 Response Time (ms): 1507.9402440000122 For: xxCxu57F 48 | Count: 4 Response Time (ms): 1751.0072690000088 For: AhNF4pPG 49 | Count: 5 Response Time (ms): 1939.998059999998 For: Oi6U08BN 50 | Count: 6 Response Time (ms): 2680.3485900000087 For: XZsELhyp 51 | Count: 7 Response Time (ms): 1856.2146930000017 For: GIZmUpcC 52 | Count: 8 Response Time (ms): 2065.2865600000223 For: BVj5l35K 53 | Count: 9 Response Time (ms): 1877.0974489999644 For: FBposSzP 54 | -----------Batch Count Incremented to: 1----------------- 55 | -----------Articles Remaining: 18804----------------- 56 | Count: 1 Response Time (ms): 2995.886498000036 For: BzRwjiAX 57 | Count: 2 Response Time (ms): 1730.0744919999997 For: JlTbSbOY 58 | Count: 3 Response Time (ms): 2168.376139999964 For: yDiUoRf0 59 | Count: 4 Response Time (ms): 2144.7787460000254 For: naXTko6Y 60 | Count: 5 Response Time (ms): 2261.015951999987 For: 7Hullk16 61 | Count: 6 Response Time (ms): 1879.1392339999875 For: MGeK5VZY 62 | Count: 7 Response Time (ms): 2405.557672999974 For: Mpc8yNAX 63 | Count: 8 Response Time (ms): 2145.002160999953 For: n1sdDo9K 64 | Count: 9 Response Time (ms): 2169.3155030000053 For: wMN6feEj 65 | -----------Batch Count Incremented to: 1----------------- 66 | -----------Articles Remaining: 18795----------------- 67 | Count: 1 Response Time (ms): 2227.133016999971 For: 5VPwYtdF 68 | Count: 2 Response Time (ms): 2646.4689700000454 For: O2N6C9Kl 69 | Count: 3 Response Time (ms): 2640.7431579999975 For: loiMCEtE 70 | Count: 4 Response Time (ms): 1933.208064999999 For: VBBDcbNT 71 | Count: 5 Response Time (ms): 2390.1610850000434 For: WIkaQjh4 72 | Count: 6 Response Time (ms): 2042.3644500000082 For: 46RSFbaA 73 | Count: 7 Response Time (ms): 2032.349543999997 For: rLShBvel 74 | Count: 8 Response Time (ms): 2272.469150999983 For: zlrUBCBR 75 | Count: 9 Response Time (ms): 2167.4444839999924 For: E0YFI3Sw 76 | -----------Batch Count Incremented to: 1----------------- 77 | -----------Articles Remaining: 18786----------------- 78 | Count: 1 Response Time (ms): 2454.309755000053 For: PcsA276q 79 | Count: 2 Response Time (ms): 2061.461980000022 For: rRgpkrXM 80 | Count: 3 Response Time (ms): 2687.3852919999626 For: NtBdb80j 81 | Count: 4 Response Time (ms): 2250.320441000018 For: SxIVWlSU 82 | Count: 5 Response Time (ms): 2291.404605000018 For: w1NlWIAN 83 | Count: 6 Response Time (ms): 2213.4489950000134 For: 5NW6ExeT 84 | Count: 7 Response Time (ms): 2521.315936000028 For: HGWvd1TV 85 | Count: 8 Response Time (ms): 3080.534426999977 For: VbCYpKWa 86 | Count: 9 Response Time (ms): 2396.1845810000377 For: ZMdqTUzI 87 | -----------Batch Count Incremented to: 1----------------- 88 | -----------Articles Remaining: 18777----------------- 89 | Count: 1 Response Time (ms): 2657.431440000015 For: QXepDd9p 90 | Count: 2 Response Time (ms): 2206.3086449999537 For: SZNoxptN 91 | Count: 3 Response Time (ms): 2036.8310549999878 For: SCaeebV4 92 | Count: 4 Response Time (ms): 2439.9414989999786 For: skCUSxrp 93 | Count: 5 Response Time (ms): 2682.343807999976 For: pAUQB4jB 94 | Count: 6 Response Time (ms): 2906.6487350000534 For: yu7sC3HP 95 | Count: 7 Response Time (ms): 2176.102577999962 For: J6FGaw9Q 96 | Count: 8 Response Time (ms): 2405.769033999997 For: 1dr6xvYG 97 | Count: 9 Response Time (ms): 2797.179632000014 For: THEZDlYO 98 | -----------Batch Count Incremented to: 1----------------- 99 | -----------Articles Remaining: 18768----------------- 100 | Count: 1 Response Time (ms): 2473.3936220000032 For: sSlIkoQo 101 | Count: 2 Response Time (ms): 3454.8923230000655 For: O7QccuMT 102 | Count: 3 Response Time (ms): 2336.3689159999776 For: WE8gXz1t 103 | Count: 4 Response Time (ms): 3324.6540969999915 For: jec9WiVf 104 | Count: 5 Response Time (ms): 2383.5500789999787 For: cgfUXtmV 105 | Count: 6 Response Time (ms): 2283.7603460000537 For: swREmqZ5 106 | Count: 7 Response Time (ms): 2794.0640070000372 For: dwwetb5a 107 | Count: 8 Response Time (ms): 3613.8356699999713 For: zBKeJNPx 108 | Count: 9 Response Time (ms): 2304.6178479999944 For: mRSlqRyz 109 | -----------Batch Count Incremented to: 1----------------- 110 | -----------Articles Remaining: 18759----------------- 111 | Count: 1 Response Time (ms): 2746.601210999972 For: 48MB0BCX 112 | Count: 2 Response Time (ms): 2901.4125490000297 For: shSPZSmb 113 | Count: 3 Response Time (ms): 2392.2327669999795 For: 6oAYdk24 114 | Count: 4 Response Time (ms): 2498.061125999957 For: ZGwVXJGo 115 | Count: 5 Response Time (ms): 2758.2586759999103 For: D3hUh1xp 116 | Count: 6 Response Time (ms): 2441.016406000039 For: udImd8Go 117 | Count: 7 Response Time (ms): 2885.476042000082 For: KwNCAdny 118 | Count: 8 Response Time (ms): 2825.6463979999535 For: Xwmjm0bt 119 | Count: 9 Response Time (ms): 2391.098563000036 For: SpsmxXrB 120 | -----------Batch Count Incremented to: 1----------------- 121 | -----------Articles Remaining: 18750----------------- 122 | Count: 1 Response Time (ms): 3737.427398 For: ZWBQGAIO 123 | Count: 2 Response Time (ms): 2413.7091120000114 For: o3dNdJoA 124 | Count: 3 Response Time (ms): 2608.162010000058 For: 4IifsTCf 125 | Count: 4 Response Time (ms): 2675.9133069999807 For: zN6cLGLf 126 | Count: 5 Response Time (ms): 2553.013663999969 For: mwtpZigs 127 | Count: 6 Response Time (ms): 2718.917149999994 For: PzY2rFe8 128 | Count: 7 Response Time (ms): 3027.950142000045 For: 2ZCKeHy4 129 | Count: 8 Response Time (ms): 3445.323476999998 For: JIjab7Ax 130 | Count: 9 Response Time (ms): 3087.3718250000093 For: 4VxiBUZP 131 | -----------Batch Count Incremented to: 1----------------- 132 | -----------Articles Remaining: 18741----------------- 133 | Count: 1 Response Time (ms): 2511.079667000042 For: IYpm7x8U 134 | Count: 2 Response Time (ms): 2661.000711999892 For: DYvY8YKZ 135 | Count: 3 Response Time (ms): 2467.1968550000456 For: 6h7AUWAw 136 | Count: 4 Response Time (ms): 2538.161509999947 For: o9u583gy 137 | Count: 5 Response Time (ms): 2657.492460999987 For: XfZGYA4H 138 | Count: 6 Response Time (ms): 2429.0063310000114 For: gWm8CIK1 139 | Count: 7 Response Time (ms): 2941.8367669999134 For: foFrnEGZ 140 | Count: 8 Response Time (ms): 2876.0722589999787 For: arOJPakN 141 | Count: 9 Response Time (ms): 2611.6206269999966 For: SpFsWguK 142 | -----------Batch Count Incremented to: 1----------------- 143 | -----------Articles Remaining: 18732----------------- 144 | Count: 1 Response Time (ms): 2991.1761580000166 For: UuLKYByp 145 | Count: 2 Response Time (ms): 3000.7782370000496 For: g6xJpAtZ 146 | Count: 3 Response Time (ms): 2479.420439000125 For: S8XaxMm1 147 | Count: 4 Response Time (ms): 2567.829710999911 For: pdhxk5Kl 148 | Count: 5 Response Time (ms): 2675.0585539999884 For: FlcfsC6E 149 | Count: 6 Response Time (ms): 3219.3407479998423 For: AJcCVASx 150 | Count: 7 Response Time (ms): 2815.990017000062 For: MqTfjSQa 151 | Count: 8 Response Time (ms): 2848.069932000013 For: vzpbmKrK 152 | Count: 9 Response Time (ms): 2891.1571039999253 For: iUpQaHHC 153 | -----------Batch Count Incremented to: 1----------------- 154 | -----------Articles Remaining: 18723----------------- 155 | Count: 1 Response Time (ms): 3168.1395829998655 For: BUTkeeLq 156 | Count: 2 Response Time (ms): 2594.6084739999496 For: vlIPvB2z 157 | Count: 3 Response Time (ms): 3352.3628479999606 For: hIbFZTd0 158 | Count: 4 Response Time (ms): 3075.916344999976 For: 8wVDxtJy 159 | Count: 5 Response Time (ms): 3080.1655239999527 For: nXq3tsPU 160 | Count: 6 Response Time (ms): 2994.4892550000222 For: yvmNmR30 161 | Count: 7 Response Time (ms): 3118.514685000002 For: 0xaWgJUx 162 | Count: 8 Response Time (ms): 3064.9742289999267 For: NTMdGxJa 163 | Count: 9 Response Time (ms): 3716.7106190000195 For: j54dqqCY 164 | -----------Batch Count Incremented to: 1----------------- 165 | -----------Articles Remaining: 18714----------------- 166 | Count: 1 Response Time (ms): 2665.11134199996 For: GYR7EEoQ 167 | Count: 2 Response Time (ms): 3251.55336900003 For: PmyD81ys 168 | Count: 3 Response Time (ms): 2769.4488539999584 For: M4qKIYnW 169 | Count: 4 Response Time (ms): 2896.080653000099 For: oGCycwCR 170 | Count: 5 Response Time (ms): 3048.840713999991 For: D3oTYmT6 171 | Count: 6 Response Time (ms): 2506.7456919999095 For: brLrldS6 172 | Count: 7 Response Time (ms): 2805.0759410000173 For: 0XOzbkCN 173 | Count: 8 Response Time (ms): 2581.7067810000153 For: r2K6HDic 174 | Count: 9 Response Time (ms): 2909.0799350001034 For: QwmPfoll 175 | -----------Batch Count Incremented to: 1----------------- 176 | -----------Articles Remaining: 18705----------------- 177 | Count: 1 Response Time (ms): 3080.4197820000118 For: PYOuaOCz 178 | Count: 2 Response Time (ms): 2873.9869399999734 For: DvjQwS7Q 179 | Count: 3 Response Time (ms): 2873.989850999962 For: FptvUfOS 180 | Count: 4 Response Time (ms): 4095.128934999986 For: JUBTgUyQ 181 | Count: 5 Response Time (ms): 3467.2185460000765 For: CXsghs3C 182 | Count: 6 Response Time (ms): 4009.932480000076 For: Bqkj30ux 183 | Count: 7 Response Time (ms): 4398.804160000116 For: fDF8OH0k 184 | Count: 8 Response Time (ms): 3071.6830349999364 For: OxeULw4q 185 | Count: 9 Response Time (ms): 3220.7500890000956 For: hgBAc1xz 186 | -----------Batch Count Incremented to: 1----------------- 187 | -----------Articles Remaining: 18696----------------- 188 | Count: 1 Response Time (ms): 3045.5047849999974 For: jXVimUgg 189 | Count: 2 Response Time (ms): 3397.634108999977 For: 3EREqlin 190 | Count: 3 Response Time (ms): 2915.524366000085 For: yBywj1xX 191 | Count: 4 Response Time (ms): 2719.655909000081 For: ewH0Se3m 192 | Count: 5 Response Time (ms): 2902.433175000071 For: xoGxy495 193 | Count: 6 Response Time (ms): 2603.082228000043 For: bxw2MtvT 194 | Count: 7 Response Time (ms): 3768.8531659999862 For: 5sI3F3R6 195 | Count: 8 Response Time (ms): 3564.164635000052 For: csmrH79e 196 | Count: 9 Response Time (ms): 3373.0827450000797 For: 9WuIu5Bb 197 | -----------Batch Count Incremented to: 1----------------- 198 | -----------Articles Remaining: 18687----------------- 199 | Count: 1 Response Time (ms): 3240.287211000046 For: iWCS1xgI 200 | Count: 2 Response Time (ms): 2819.539930000028 For: H1my17bi 201 | Count: 3 Response Time (ms): 3391.2379619999556 For: Ae2MJGSo 202 | Count: 4 Response Time (ms): 5366.3750070001115 For: UZf7Q2OW 203 | Count: 5 Response Time (ms): 3354.903779000044 For: vB00sHAe 204 | Count: 6 Response Time (ms): 3391.9642380001023 For: 4VsDzmSS 205 | Count: 7 Response Time (ms): 3037.3317540000426 For: SfcQYY4O 206 | Count: 8 Response Time (ms): 2882.3018359999405 For: 0mAyJeEL 207 | Count: 9 Response Time (ms): 3246.067914000014 For: nhGxPLp9 208 | -----------Batch Count Incremented to: 1----------------- 209 | -----------Articles Remaining: 18678----------------- 210 | Count: 1 Response Time (ms): 3170.132179999957 For: wd1dGy5W 211 | Count: 2 Response Time (ms): 3194.211947999953 For: o8b4wfrl 212 | Count: 3 Response Time (ms): 3170.2894339999184 For: AwaNkf2x 213 | Count: 4 Response Time (ms): 4879.768370000005 For: JkHTmqx6 214 | Count: 5 Response Time (ms): 4623.147480999876 For: 13sY8QBp 215 | Count: 6 Response Time (ms): 2964.0303199999616 For: h1XUzDdv 216 | Count: 7 Response Time (ms): 3377.4668269999092 For: D1R19Lvb 217 | Count: 8 Response Time (ms): 16821.384470999998 For: hxoHnexU 218 | Count: 9 Response Time (ms): 3816.500924000051 For: 2E0MJA59 219 | -----------Batch Count Incremented to: 1----------------- 220 | -----------Articles Remaining: 18669----------------- 221 | Count: 1 Response Time (ms): 3469.0709239998832 For: 7ErBGMOb 222 | Count: 2 Response Time (ms): 3543.5582099998137 For: qvrzPdGm 223 | Count: 3 Response Time (ms): 3646.632666000165 For: fXeNbChZ 224 | Count: 4 Response Time (ms): 2921.070487000048 For: oQmYohmJ 225 | Count: 5 Response Time (ms): 3477.2394809998805 For: gPwklZZC 226 | Count: 6 Response Time (ms): 3066.678258000058 For: iLGfN52B 227 | Count: 7 Response Time (ms): 2759.7522410000674 For: 8gj4sX6c 228 | Count: 8 Response Time (ms): 4061.164648000151 For: yI3YJhf9 229 | Count: 9 Response Time (ms): 3597.516894999775 For: SkAkhteV 230 | -----------Batch Count Incremented to: 1----------------- 231 | -----------Articles Remaining: 18660----------------- 232 | Count: 1 Response Time (ms): 4435.957006000099 For: Vb5FteuO 233 | Count: 2 Response Time (ms): 4187.035458000144 For: UDrPw0jp 234 | Count: 3 Response Time (ms): 3687.086935000145 For: jS9Gb0tJ 235 | Count: 4 Response Time (ms): 3147.88227700023 For: z9CMFYrZ 236 | Count: 5 Response Time (ms): 3920.3908919997048 For: 5AwYTNM7 237 | Count: 6 Response Time (ms): 3129.3991460000398 For: ZxSuPfnt 238 | Count: 7 Response Time (ms): 3459.2003939999267 For: QMgaBOwV 239 | Count: 8 Response Time (ms): 3504.289168000105 For: PvSpoCZ7 240 | Count: 9 Response Time (ms): 4911.107000999968 For: 2u7PItZR 241 | -----------Batch Count Incremented to: 1----------------- 242 | -----------Articles Remaining: 18651----------------- 243 | Count: 1 Response Time (ms): 3298.08989199996 For: jacCHIRU 244 | Count: 2 Response Time (ms): 3498.979902999825 For: Ssu0j7OL 245 | Count: 3 Response Time (ms): 2761.6866610001307 For: W4Mk8uZj 246 | Count: 4 Response Time (ms): 4776.467428000178 For: tBUi4TAw 247 | Count: 5 Response Time (ms): 4475.53310599993 For: 5QUf4RSv 248 | Count: 6 Response Time (ms): 3022.7368979998864 For: I9X5gVWt 249 | Count: 7 Response Time (ms): 2965.310041000019 For: GVcMXu9s 250 | Count: 8 Response Time (ms): 3477.5847159998957 For: grbdEi9n 251 | Count: 9 Response Time (ms): 3566.173869999824 For: DXmlo2o1 252 | -----------Batch Count Incremented to: 1----------------- 253 | -----------Articles Remaining: 18642----------------- 254 | Count: 1 Response Time (ms): 3375.077644999721 For: yDGAJQha 255 | Count: 2 Response Time (ms): 4601.980135999969 For: S9wQooQw 256 | Count: 3 Response Time (ms): 4541.608272000216 For: vWIWDfFd 257 | Count: 4 Response Time (ms): 3401.122862000135 For: spIDV4rD 258 | Count: 5 Response Time (ms): 5329.272964999895 For: TbEvNCkF 259 | Count: 6 Response Time (ms): 3885.494000999839 For: WN32XHUN 260 | Count: 7 Response Time (ms): 3792.912695000181 For: VtfEv8gd 261 | Count: 8 Response Time (ms): 4972.28820900002 For: VTp8w6xX 262 | Count: 9 Response Time (ms): 3657.2532219997374 For: uteUreIN 263 | -----------Batch Count Incremented to: 1----------------- 264 | -----------Articles Remaining: 18633----------------- 265 | Count: 1 Response Time (ms): 4720.6426330000395 For: lL4VdHrL 266 | Count: 2 Response Time (ms): 4145.534971000045 For: xE1TOph9 267 | Count: 3 Response Time (ms): 4616.3343639997765 For: fLLn3JuR 268 | Count: 4 Response Time (ms): 4055.1170929998625 For: uJPCRW8m 269 | Count: 5 Response Time (ms): 4097.564088000101 For: ZzWDIZmx 270 | Count: 6 Response Time (ms): 3628.28784600005 For: 3uRRuEqb 271 | Count: 7 Response Time (ms): 4007.777606999851 For: EqzjNw5O 272 | Count: 8 Response Time (ms): 3604.991945000016 For: Un4XkTCa 273 | Count: 9 Response Time (ms): 3282.695576000144 For: kEz1GPlV 274 | -----------Batch Count Incremented to: 1----------------- 275 | -----------Articles Remaining: 18624----------------- 276 | Count: 1 Response Time (ms): 3886.4737559998175 For: sHBnshcd 277 | Count: 2 Response Time (ms): 4419.277577999979 For: Rr0SpjGC 278 | Count: 3 Response Time (ms): 3700.875534000108 For: qjVxmHjc 279 | Count: 4 Response Time (ms): 3762.521386999637 For: KLiGJEBF 280 | Count: 5 Response Time (ms): 4085.2085210001096 For: FUUm2ARa 281 | Count: 6 Response Time (ms): 3764.3558479996864 For: TbdC29ER 282 | Count: 7 Response Time (ms): 3578.4318909998983 For: SpMY92qE 283 | Count: 8 Response Time (ms): 3702.8444779999554 For: nqk2i6sP 284 | Count: 9 Response Time (ms): 3839.4701750001404 For: qhoMPzaV 285 | -----------Batch Count Incremented to: 1----------------- 286 | -----------Articles Remaining: 18615----------------- 287 | Count: 1 Response Time (ms): 3884.8486089999788 For: oITvWS6F 288 | Count: 2 Response Time (ms): 3947.5243069998687 For: rqdnny7e 289 | Count: 3 Response Time (ms): 3883.7057560001267 For: 4wvbNfPH 290 | Count: 4 Response Time (ms): 3680.763234999962 For: 5l6C4jkK 291 | Count: 5 Response Time (ms): 3783.5867879998405 For: zQ0r0V1G 292 | Count: 6 Response Time (ms): 5568.3162339995615 For: 1jrRc2Ke 293 | Count: 7 Response Time (ms): 5358.983100999729 For: hEUsWSIQ 294 | Count: 8 Response Time (ms): 5047.278473000042 For: vk9o7nCa 295 | Count: 9 Response Time (ms): 3883.7480710000964 For: BGWIehtk 296 | -----------Batch Count Incremented to: 1----------------- 297 | -----------Articles Remaining: 18606----------------- 298 | Count: 1 Response Time (ms): 4256.7616759999655 For: y9kvJRUe 299 | Count: 2 Response Time (ms): 4162.711922000279 For: sMiLAoqY 300 | Count: 3 Response Time (ms): 5013.531063999864 For: 5hCwOFvf 301 | Count: 4 Response Time (ms): 3855.9126860001124 For: Olw8J28M 302 | Count: 5 Response Time (ms): 4007.767186999903 For: mO9Qj0LR 303 | Count: 6 Response Time (ms): 4805.686094000004 For: PMOpRkYQ 304 | Count: 7 Response Time (ms): 4869.3528900000965 For: mkuedqzy 305 | Count: 8 Response Time (ms): 4993.601753999828 For: QF5zp4kX 306 | Count: 9 Response Time (ms): 3727.251275999937 For: 3N2qMzeC 307 | -----------Batch Count Incremented to: 1----------------- 308 | -----------Articles Remaining: 18597----------------- 309 | Count: 1 Response Time (ms): 4394.143112000078 For: SomRh56M 310 | Count: 2 Response Time (ms): 5606.115575999953 For: 0vT8g7fM 311 | Count: 3 Response Time (ms): 3580.238929000101 For: qzmzz0qq 312 | Count: 4 Response Time (ms): 3994.212544000009 For: AXi31TIp 313 | Count: 5 Response Time (ms): 4267.806045999867 For: ivha0fZe 314 | Count: 6 Response Time (ms): 4983.469736999716 For: BZuPJJWB 315 | Count: 7 Response Time (ms): 3772.9428310001967 For: J5qtYsOZ 316 | Count: 8 Response Time (ms): 4827.110351000214 For: 8EYnx2m2 317 | Count: 9 Response Time (ms): 4243.261218999978 For: EcId6LbJ 318 | -----------Batch Count Incremented to: 1----------------- 319 | -----------Articles Remaining: 18588----------------- 320 | Count: 1 Response Time (ms): 5828.616986999987 For: 5qDaf51z 321 | Count: 2 Response Time (ms): 4603.79822300002 For: 90zTy0RR 322 | Count: 3 Response Time (ms): 4034.58230800007 For: 67Q3ytPv 323 | Count: 4 Response Time (ms): 3814.8801809998695 For: yxuHc8Ud 324 | Count: 5 Response Time (ms): 4039.558997000102 For: DxkIyjIF 325 | Count: 6 Response Time (ms): 3887.3238539999584 For: wNANpoyV 326 | Count: 7 Response Time (ms): 5262.889454000164 For: Ktw5uE4O 327 | Count: 8 Response Time (ms): 4515.075710000005 For: sLtLriag 328 | Count: 9 Response Time (ms): 5321.919461000129 For: 0jXOIj2d 329 | -----------Batch Count Incremented to: 1----------------- 330 | -----------Articles Remaining: 18579----------------- 331 | Count: 1 Response Time (ms): 8382.626600000076 For: pO1BaRyo 332 | Count: 2 Response Time (ms): 4744.192897000001 For: wNU6Y42A 333 | Count: 3 Response Time (ms): 4127.503282999853 For: W703m9sg 334 | Count: 4 Response Time (ms): 3862.8091189997504 For: 3imwpyDF 335 | Count: 5 Response Time (ms): 4230.833611999988 For: Kjj6pQ8p 336 | Count: 6 Response Time (ms): 4419.517872999888 For: mAXH7FRr 337 | Count: 7 Response Time (ms): 4295.18186199991 For: lufMoaPm 338 | Count: 8 Response Time (ms): 5814.4982720001135 For: ZCJ16pIv 339 | Count: 9 Response Time (ms): 4397.421001000097 For: CaZosZ46 340 | -----------Batch Count Incremented to: 1----------------- 341 | -----------Articles Remaining: 18570----------------- 342 | Count: 1 Response Time (ms): 5269.42719099985 For: ELu8BtQf 343 | Count: 2 Response Time (ms): 6579.1546009999 For: ZdXg0RaE 344 | Count: 3 Response Time (ms): 3860.648073000135 For: jLmD5zzt 345 | Count: 4 Response Time (ms): 4705.699753999943 For: LWVGZilf 346 | Count: 5 Response Time (ms): 4640.826425999985 For: SLzL7Ri3 347 | Count: 6 Response Time (ms): 5115.5377190000145 For: i9undnAy 348 | Count: 7 Response Time (ms): 3915.984403999988 For: PUeDunYw 349 | Count: 8 Response Time (ms): 4046.183212999953 For: vf9o0RJs 350 | Count: 9 Response Time (ms): 3841.5665839998983 For: tDMdUHqt 351 | -----------Batch Count Incremented to: 1----------------- 352 | -----------Articles Remaining: 18561----------------- 353 | Count: 1 Response Time (ms): 3799.583180999849 For: aoVfWFuy 354 | Count: 2 Response Time (ms): 4295.0977280000225 For: Vui7zQaf 355 | Count: 3 Response Time (ms): 3932.1460469999583 For: YRSDZlj4 356 | Count: 4 Response Time (ms): 6549.229441999923 For: U4XhViYg 357 | Count: 5 Response Time (ms): 6674.561607000069 For: oEYSqII9 358 | Count: 6 Response Time (ms): 6611.052833000314 For: y5P7h8DG 359 | Count: 7 Response Time (ms): 5666.70692500053 For: riDe4J6h 360 | Count: 8 Response Time (ms): 5547.582305999938 For: 7J3T7ZZ7 361 | Count: 9 Response Time (ms): 5022.090755000012 For: SC3NuWwk 362 | -----------Batch Count Incremented to: 1----------------- 363 | -----------Articles Remaining: 18552----------------- 364 | Count: 1 Response Time (ms): 4640.32385499985 For: FJa7q30B 365 | Count: 2 Response Time (ms): 5013.655858000973 For: vFnISFiM 366 | Count: 3 Response Time (ms): 7186.474578000139 For: wyMfqepZ 367 | Count: 4 Response Time (ms): 6056.408592000138 For: 87kKffpz 368 | Count: 5 Response Time (ms): 4165.424934999552 For: F2Rwh2jJ 369 | Count: 6 Response Time (ms): 3923.0093390000984 For: klRBOd7M 370 | Count: 7 Response Time (ms): 3885.8139859999064 For: nNagCxLr 371 | Count: 8 Response Time (ms): 5014.100276000099 For: kPsrLvRR 372 | Count: 9 Response Time (ms): 3786.8563779999968 For: ViGPSHMP 373 | -----------Batch Count Incremented to: 1----------------- 374 | -----------Articles Remaining: 18543----------------- 375 | Count: 1 Response Time (ms): 5114.003055999754 For: 1bS4m3VM 376 | Count: 2 Response Time (ms): 5420.201494000154 For: nxS1R7lP 377 | Count: 3 Response Time (ms): 4641.918385000434 For: ScQyeH9d 378 | Count: 4 Response Time (ms): 4806.610156000359 For: MSH8jQak 379 | Count: 5 Response Time (ms): 5422.096483000554 For: g7zn4aiL 380 | Count: 6 Response Time (ms): 5728.743727999972 For: c0Exqzws 381 | Count: 7 Response Time (ms): 4602.336438999977 For: G5zBJkmb 382 | Count: 8 Response Time (ms): 5030.279955999926 For: BF9DRPE9 383 | Count: 9 Response Time (ms): 5380.701969999587 For: Po377VkN 384 | -----------Batch Count Incremented to: 1----------------- 385 | -----------Articles Remaining: 18534----------------- 386 | Count: 1 Response Time (ms): 4724.412599000381 For: RXDrixiA 387 | Count: 2 Response Time (ms): 4909.7264839997515 For: xavzh4EF 388 | Count: 3 Response Time (ms): 5355.248884999892 For: QJy8jhfc 389 | Count: 4 Response Time (ms): 4702.113994999789 For: YzAbVurf 390 | Count: 5 Response Time (ms): 5624.441702000098 For: nCY3087S 391 | Count: 6 Response Time (ms): 5085.5336010002065 For: xA7aaf9a 392 | Count: 7 Response Time (ms): 5115.211619999958 For: Q2A9xVIA 393 | Count: 8 Response Time (ms): 4628.443979999982 For: GgO4IORi 394 | Count: 9 Response Time (ms): 4802.975035000127 For: 3n2ASXu9 395 | -----------Batch Count Incremented to: 1----------------- 396 | -----------Articles Remaining: 18525----------------- 397 | Count: 1 Response Time (ms): 5011.981979999691 For: vnDlMHBp 398 | Count: 2 Response Time (ms): 4647.338936999673 For: QSNnHw9z 399 | Count: 3 Response Time (ms): 4654.557581000263 For: RsRLcHi4 400 | Count: 4 Response Time (ms): 4808.056502999738 For: pOieofsE 401 | Count: 5 Response Time (ms): 4704.374500000151 For: 4Sh4u3I6 402 | Count: 6 Response Time (ms): 5147.505742999725 For: 7n4D2RSM 403 | Count: 7 Response Time (ms): 7478.668454000261 For: dv3nKOLc 404 | Count: 8 Response Time (ms): 4650.119937000098 For: lHB9YfC1 405 | Count: 9 Response Time (ms): 6444.908098000335 For: 9BaDjXqe 406 | -----------Batch Count Incremented to: 1----------------- 407 | -----------Articles Remaining: 18516----------------- 408 | Count: 1 Response Time (ms): 5729.089275999926 For: kJfWS6Ay 409 | Count: 2 Response Time (ms): 5419.908292999724 For: Pa27xm6z 410 | Count: 3 Response Time (ms): 5217.43897300004 For: yd68oHYO 411 | Count: 4 Response Time (ms): 5180.1262540000025 For: 5XQWtfql 412 | Count: 5 Response Time (ms): 5758.7306789997965 For: CnxrKC4R 413 | Count: 6 Response Time (ms): 5318.644033999881 For: lWRy7Ovh 414 | Count: 7 Response Time (ms): 4926.53016100009 For: bkqyBOSr 415 | Count: 8 Response Time (ms): 5319.078200999647 For: TstfB4xv 416 | Count: 9 Response Time (ms): 5378.575802000007 For: QYgG9IJn 417 | -----------Batch Count Incremented to: 1----------------- 418 | -----------Articles Remaining: 18507----------------- -------------------------------------------------------------------------------- /scale-test/movies-results/linear/movies-1,10.txt: -------------------------------------------------------------------------------- 1 | Will perform test for 18850 Objects 2 | Count: 1 Response Time (ms): 649.3308589999999 For: gpQ97oNG 3 | Count: 2 Response Time (ms): 811.0548359999998 For: aGaWP9WL 4 | Count: 3 Response Time (ms): 683.4369949999996 For: WrnbmAU8 5 | Count: 4 Response Time (ms): 550.9809499999997 For: 9w8KyLU9 6 | Count: 5 Response Time (ms): 484.6003380000002 For: zDeT63Sn 7 | Count: 6 Response Time (ms): 1167.9921649999997 For: oVJaw1qT 8 | Count: 7 Response Time (ms): 976.1912140000004 For: YQBfmMnK 9 | Count: 8 Response Time (ms): 844.8709759999974 For: 6WoAFQNh 10 | Count: 9 Response Time (ms): 876.7098830000014 For: T9Xp8XTx 11 | -----------Batch Count Incremented to: 10----------------- 12 | -----------Articles Remaining: 18796----------------- 13 | Count: 1 Response Time (ms): 892.9902599999987 For: KgbIWl9X 14 | Count: 2 Response Time (ms): 1136.5696380000009 For: OokeEAHe 15 | Count: 3 Response Time (ms): 2387.922429999997 For: Fo05ndGb 16 | Count: 4 Response Time (ms): 1192.3447349999988 For: F27YBBAa 17 | Count: 5 Response Time (ms): 952.6217749999996 For: Ss2isne0 18 | Count: 6 Response Time (ms): 2145.916452000005 For: ar0Z6Ajs 19 | Count: 7 Response Time (ms): 1096.8418220000021 For: vJYwa43Z 20 | Count: 8 Response Time (ms): 1478.765965999999 For: YJ1jZWsQ 21 | Count: 9 Response Time (ms): 1300.182463000001 For: bLkJLgoy 22 | -----------Batch Count Incremented to: 100----------------- 23 | -----------Articles Remaining: 18256----------------- 24 | Count: 1 Response Time (ms): 16584.317316999997 For: sjKuAMO9 25 | Count: 2 Response Time (ms): 2487.8361810000133 For: EHYMuzYS 26 | Count: 3 Response Time (ms): 2820.185799999992 For: wyJiBqeE 27 | Count: 4 Response Time (ms): 3580.0199419999917 For: 1CVtBxew 28 | Count: 5 Response Time (ms): 3763.242831999989 For: v4nHZoGw 29 | Count: 6 Response Time (ms): 5471.094380999981 For: fg8gAYmU 30 | Count: 7 Response Time (ms): 4707.599402000014 For: oGSGnFe1 31 | Count: 8 Response Time (ms): 4876.563630000004 For: SplIpHJ4 32 | Count: 9 Response Time (ms): 5575.020100999987 For: eQPi9Gyv 33 | -----------Batch Count Incremented to: 1000----------------- 34 | -----------Articles Remaining: 12856----------------- 35 | Count: 1 Response Time (ms): 8407.088822000034 For: MQqsxgyr 36 | Count: 2 Response Time (ms): 14256.62552999999 For: Wg6Kw6gd 37 | Count: 3 Response Time (ms): 18389.929892 For: 1ljEpuAs 38 | Count: 4 Response Time (ms): 23335.74891000001 For: Gdcydcky -------------------------------------------------------------------------------- /scale-test/movies-results/parallel/run1-12K-records.txt: -------------------------------------------------------------------------------- 1 | Indexed Article Num:11298 (~59% uploaded) Response Time (ms): 109754.99902699981 For: Oz86UJ36 2 | Indexed Article Num:11328 (~60% uploaded) Response Time (ms): 97836.39003999904 For: zReuGHVV 3 | Indexed Article Num:11367 (~60% uploaded) Response Time (ms): 82759.53803499974 For: ObXYnXWS 4 | Indexed Article Num:11341 (~60% uploaded) Response Time (ms): 94652.92005200032 For: suoJS6HA 5 | Indexed Article Num:11356 (~60% uploaded) Response Time (ms): 89444.51649199892 For: 8uwFak8G 6 | Indexed Article Num:11351 (~60% uploaded) Response Time (ms): 92097.52134099975 For: RYeUneTh 7 | Indexed Article Num:11390 (~60% uploaded) Response Time (ms): 73027.9788150005 For: LMDoprN6 8 | Indexed Article Num:11349 (~60% uploaded) Response Time (ms): 93800.46741600148 For: UpfXybFr 9 | Indexed Article Num:11342 (~60% uploaded) Response Time (ms): 96415.99226999935 For: nieOHyxD 10 | Indexed Article Num:11323 (~60% uploaded) Response Time (ms): 104723.46851200052 For: dVPu084W 11 | Indexed Article Num:11322 (~60% uploaded) Response Time (ms): 106648.4958680002 For: N8kZtRZO 12 | Indexed Article Num:11399 (~60% uploaded) Response Time (ms): 72575.42521700077 For: JXvLaINH 13 | Indexed Article Num:11412 (~60% uploaded) Response Time (ms): 67050.3447470013 For: uVMUXe2s 14 | Indexed Article Num:11384 (~60% uploaded) Response Time (ms): 79676.15927300137 For: 1Fyj1HzC 15 | Indexed Article Num:11337 (~60% uploaded) Response Time (ms): 101312.59450399969 For: aQRuHrEi 16 | Indexed Article Num:11379 (~60% uploaded) Response Time (ms): 82523.53199400101 For: ba0iW0Ft 17 | Indexed Article Num:11327 (~60% uploaded) Response Time (ms): 107369.01472800039 For: HppsGkbm 18 | Indexed Article Num:11395 (~60% uploaded) Response Time (ms): 76291.75225700065 For: KQZWdRF2 19 | Indexed Article Num:11358 (~60% uploaded) Response Time (ms): 94830.08843700122 For: zbSQEUBj 20 | Indexed Article Num:11348 (~60% uploaded) Response Time (ms): 99707.32146599889 For: NHFQgO8f 21 | Indexed Article Num:11338 (~60% uploaded) Response Time (ms): 103177.02716900036 For: tIeEMmL7 22 | Indexed Article Num:11385 (~60% uploaded) Response Time (ms): 82739.91030900087 For: K1SxiB8D 23 | Indexed Article Num:11442 (~60% uploaded) Response Time (ms): 58320.39901000261 For: fUNgxMTc 24 | Indexed Article Num:11362 (~60% uploaded) Response Time (ms): 95454.35834799986 For: 3a4HRgfN 25 | Indexed Article Num:11398 (~60% uploaded) Response Time (ms): 77404.95418900065 For: n1pZ5KoP 26 | Indexed Article Num:11359 (~60% uploaded) Response Time (ms): 97048.92357800156 For: Ih768seA 27 | Indexed Article Num:11368 (~60% uploaded) Response Time (ms): 92885.83457400091 For: 8sFGL9RZ 28 | Indexed Article Num:11400 (~60% uploaded) Response Time (ms): 78479.98699699901 For: OeBbrW2K 29 | Indexed Article Num:11377 (~60% uploaded) Response Time (ms): 88355.36322899908 For: AmfFNFwC 30 | Indexed Article Num:11334 (~60% uploaded) Response Time (ms): 109006.5759759983 For: IyUoG8RP 31 | Indexed Article Num:11389 (~60% uploaded) Response Time (ms): 83554.87776000053 For: 0ruQma4r 32 | Indexed Article Num:11361 (~60% uploaded) Response Time (ms): 98864.21675899997 For: gu8edhQY 33 | Indexed Article Num:11414 (~60% uploaded) Response Time (ms): 72942.7746489998 For: JADYc3xt 34 | Indexed Article Num:11382 (~60% uploaded) Response Time (ms): 87436.29838299938 For: MKQqT3bG 35 | Indexed Article Num:11352 (~60% uploaded) Response Time (ms): 103018.02197199967 For: sqK0S6mF 36 | Indexed Article Num:11393 (~60% uploaded) Response Time (ms): 83377.36731600016 For: EbvYKm6K 37 | Indexed Article Num:11418 (~60% uploaded) Response Time (ms): 72569.36853900179 For: sUlzkz1y 38 | Indexed Article Num:11366 (~60% uploaded) Response Time (ms): 97978.43127499893 For: jmjf3lYU 39 | Indexed Article Num:11404 (~60% uploaded) Response Time (ms): 79111.43148500007 For: HBt1x1kK 40 | Indexed Article Num:11375 (~60% uploaded) Response Time (ms): 91975.14877500013 For: RcmEa85t 41 | Indexed Article Num:11421 (~60% uploaded) Response Time (ms): 72935.78758700006 For: GI8mYrI3 42 | Indexed Article Num:11369 (~60% uploaded) Response Time (ms): 96770.5848740004 For: YTGwrm4t 43 | Indexed Article Num:11401 (~60% uploaded) Response Time (ms): 81612.46797599923 For: aqqaEedi 44 | Indexed Article Num:11381 (~60% uploaded) Response Time (ms): 89831.63393500075 For: vEua2a7G 45 | Indexed Article Num:11365 (~60% uploaded) Response Time (ms): 100183.70254499931 For: 4GXASUUk 46 | Indexed Article Num:11425 (~60% uploaded) Response Time (ms): 72604.06431499962 For: i2E7YljI 47 | Indexed Article Num:11391 (~60% uploaded) Response Time (ms): 86931.5599850025 For: 6j0iQsPi 48 | Indexed Article Num:11413 (~60% uploaded) Response Time (ms): 77437.7565140007 For: ZvqjHj7o 49 | Indexed Article Num:11429 (~60% uploaded) Response Time (ms): 72322.65046400018 For: 8WeBmNqe 50 | Indexed Article Num:11357 (~60% uploaded) Response Time (ms): 104912.77171200048 For: TEEtxLLP 51 | Indexed Article Num:11402 (~60% uploaded) Response Time (ms): 83460.26073400024 For: XQAg3zmR 52 | Indexed Article Num:11415 (~60% uploaded) Response Time (ms): 77353.9325120002 For: QglcYjuQ 53 | Indexed Article Num:11431 (~60% uploaded) Response Time (ms): 72928.03984799888 For: AbvlPpMM 54 | Indexed Article Num:11411 (~60% uploaded) Response Time (ms): 80169.37042599916 For: M4pduOxY 55 | Indexed Article Num:11360 (~60% uploaded) Response Time (ms): 105240.86525900103 For: kk73eDU9 56 | Indexed Article Num:11387 (~60% uploaded) Response Time (ms): 91391.81369700003 For: aMVDrpgH 57 | Indexed Article Num:11397 (~60% uploaded) Response Time (ms): 87434.91765700094 For: xvhxGSO7 58 | Indexed Article Num:11423 (~60% uploaded) Response Time (ms): 77038.75026799925 For: 9JYAY2vU 59 | Indexed Article Num:11430 (~60% uploaded) Response Time (ms): 75242.04862100072 For: 8K4sSyMQ 60 | Indexed Article Num:11410 (~60% uploaded) Response Time (ms): 82481.51018799935 For: 3kdw4ozK 61 | Indexed Article Num:11428 (~60% uploaded) Response Time (ms): 76382.21466400009 For: tRekQgUA 62 | Indexed Article Num:11406 (~60% uploaded) Response Time (ms): 84772.7526570009 For: a9E9t5Nj 63 | Indexed Article Num:11378 (~60% uploaded) Response Time (ms): 97159.61652199924 For: KPATHjfF 64 | Indexed Article Num:11394 (~60% uploaded) Response Time (ms): 90811.4360979991 For: UHHnL1yr 65 | Indexed Article Num:11407 (~60% uploaded) Response Time (ms): 84943.36029300094 For: rX1lHHH2 66 | Indexed Article Num:11417 (~60% uploaded) Response Time (ms): 80902.59085700102 For: dNMPkDJU 67 | Indexed Article Num:11376 (~60% uploaded) Response Time (ms): 98674.46849900018 For: SjR8yhZd 68 | Indexed Article Num:11388 (~60% uploaded) Response Time (ms): 94226.76979000121 For: hr1hkwOz 69 | Indexed Article Num:11422 (~60% uploaded) Response Time (ms): 80962.72563999891 For: J0QlW7Sg 70 | Indexed Article Num:11386 (~60% uploaded) Response Time (ms): 96192.26572300028 For: VwNtxIwg 71 | Indexed Article Num:11432 (~60% uploaded) Response Time (ms): 78791.4040800007 For: CiswMtXX 72 | Indexed Article Num:11424 (~60% uploaded) Response Time (ms): 81775.18110400066 For: EEsMCe8O 73 | Indexed Article Num:11446 (~60% uploaded) Response Time (ms): 72587.04495300166 For: pe1n3nXZ 74 | Indexed Article Num:11420 (~60% uploaded) Response Time (ms): 83819.56345799938 For: RZ3WL4SK 75 | Indexed Article Num:11409 (~60% uploaded) Response Time (ms): 88256.48521500081 For: ftcZrvlS 76 | Indexed Article Num:11392 (~60% uploaded) Response Time (ms): 96661.57972200029 For: k0SQvk72 77 | Indexed Article Num:11437 (~60% uploaded) Response Time (ms): 77797.86708900146 For: wHoXFhnO 78 | Indexed Article Num:11447 (~60% uploaded) Response Time (ms): 74927.32504200097 For: UDWDAF35 79 | Indexed Article Num:11427 (~60% uploaded) Response Time (ms): 84736.88311800081 For: MZYrwroN 80 | Indexed Article Num:11443 (~60% uploaded) Response Time (ms): 79071.89208200015 For: CG9YtMXK 81 | Indexed Article Num:11456 (~60% uploaded) Response Time (ms): 74385.83300600015 For: IwRsAonh 82 | Indexed Article Num:11405 (~60% uploaded) Response Time (ms): 94955.25681600068 For: NUi4wkj9 83 | Indexed Article Num:11444 (~60% uploaded) Response Time (ms): 79213.35446700081 For: uh153UPZ 84 | Indexed Article Num:11408 (~60% uploaded) Response Time (ms): 94591.48393999971 For: buDxWmMJ 85 | Indexed Article Num:11453 (~60% uploaded) Response Time (ms): 75974.4660059996 For: VBggWue3 86 | Indexed Article Num:11433 (~60% uploaded) Response Time (ms): 85916.24033100158 For: ybfsJzHA 87 | Indexed Article Num:11435 (~60% uploaded) Response Time (ms): 84979.56964600086 For: vA0vLhYX 88 | Indexed Article Num:11472 (~60% uploaded) Response Time (ms): 72864.90565100033 For: YbFWaAzO 89 | Indexed Article Num:11484 (~60% uploaded) Response Time (ms): 68945.01377400011 For: jfkY1OBc 90 | Indexed Article Num:11475 (~60% uploaded) Response Time (ms): 72938.92175900005 For: GenKMicP 91 | Indexed Article Num:11434 (~60% uploaded) Response Time (ms): 87629.44102500007 For: P5yNkjDY 92 | Indexed Article Num:11466 (~60% uploaded) Response Time (ms): 76272.8784249993 For: BYykv3KR 93 | Indexed Article Num:11451 (~60% uploaded) Response Time (ms): 80416.23259099945 For: vmbhq8qN 94 | Indexed Article Num:11426 (~60% uploaded) Response Time (ms): 91991.63309899997 For: razCzIJT 95 | Indexed Article Num:11440 (~60% uploaded) Response Time (ms): 86007.48106299993 For: 2dFwwtSO 96 | Indexed Article Num:11471 (~60% uploaded) Response Time (ms): 75836.27715100069 For: DnzXC4eu 97 | Indexed Article Num:11403 (~60% uploaded) Response Time (ms): 101583.70912400167 For: aa1M23eY 98 | Indexed Article Num:11448 (~60% uploaded) Response Time (ms): 83730.4068959998 For: W0byL9Aw 99 | Indexed Article Num:11504 (~61% uploaded) Response Time (ms): 65314.25088499859 For: cpgFQ3Wi 100 | Indexed Article Num:11474 (~60% uploaded) Response Time (ms): 76842.95247600041 For: xLW48qS1 101 | Indexed Article Num:11449 (~60% uploaded) Response Time (ms): 83620.51828199998 For: K624kbqR 102 | Indexed Article Num:11479 (~60% uploaded) Response Time (ms): 75960.88788500056 For: colsEX7O 103 | Indexed Article Num:11416 (~60% uploaded) Response Time (ms): 98756.48207799904 For: MEFgymUr 104 | Indexed Article Num:11445 (~60% uploaded) Response Time (ms): 87321.37769799866 For: Cm2ERU4w 105 | Indexed Article Num:11441 (~60% uploaded) Response Time (ms): 89219.06910200045 For: F6L4Ug5v 106 | Indexed Article Num:11450 (~60% uploaded) Response Time (ms): 85398.6185519984 For: Cr4rQeBN 107 | Indexed Article Num:11486 (~60% uploaded) Response Time (ms): 74729.35102600046 For: GAbsPZ29 108 | Indexed Article Num:11476 (~60% uploaded) Response Time (ms): 78845.53581999801 For: KEPCyNGd 109 | Indexed Article Num:11487 (~60% uploaded) Response Time (ms): 75124.67682600021 For: LL7rMDr3 110 | Indexed Article Num:11438 (~60% uploaded) Response Time (ms): 92070.25316699967 For: wZeywgNN 111 | Indexed Article Num:11455 (~60% uploaded) Response Time (ms): 85611.1547029987 For: ZQKHTc9u 112 | Indexed Article Num:11436 (~60% uploaded) Response Time (ms): 92969.62858699914 For: DfQj3qFZ 113 | Indexed Article Num:11457 (~60% uploaded) Response Time (ms): 85231.0252209995 For: XtK2pW4Y 114 | Indexed Article Num:11477 (~60% uploaded) Response Time (ms): 80594.40189700015 For: wTSwZL5D 115 | Indexed Article Num:11461 (~60% uploaded) Response Time (ms): 85353.8243459994 For: 1W9Qw1IV 116 | Indexed Article Num:11511 (~61% uploaded) Response Time (ms): 67426.5190929994 For: NZu5aIzj 117 | Indexed Article Num:11469 (~60% uploaded) Response Time (ms): 83585.58737800084 For: SW9IbmcQ 118 | Indexed Article Num:11526 (~61% uploaded) Response Time (ms): 57105.873288000934 For: 1hcptzVM 119 | Indexed Article Num:11473 (~60% uploaded) Response Time (ms): 83025.68761900067 For: r3nKrFgM 120 | Indexed Article Num:11478 (~60% uploaded) Response Time (ms): 82007.64247899875 For: 07th5reb 121 | Indexed Article Num:11460 (~60% uploaded) Response Time (ms): 87035.31465899944 For: mNKmFvB8 122 | Indexed Article Num:11439 (~60% uploaded) Response Time (ms): 94930.68081800081 For: sNG3fzRu 123 | Indexed Article Num:11396 (~60% uploaded) Response Time (ms): 114100.97222200129 For: OEQ7ICHB 124 | Indexed Article Num:11490 (~60% uploaded) Response Time (ms): 78951.91282599978 For: 2axVoRVq 125 | Indexed Article Num:11452 (~60% uploaded) Response Time (ms): 91159.25432800036 For: kLhzzCjA 126 | Indexed Article Num:11419 (~60% uploaded) Response Time (ms): 105774.90761699993 For: oSJd7tO3 127 | Indexed Article Num:11508 (~61% uploaded) Response Time (ms): 73079.64566300157 For: ITw6J8yF 128 | Indexed Article Num:11521 (~61% uploaded) Response Time (ms): 65720.14928999823 For: aAGgHijO 129 | Indexed Article Num:11528 (~61% uploaded) Response Time (ms): 60337.7721420005 For: aD8R7qaa 130 | Indexed Article Num:11462 (~60% uploaded) Response Time (ms): 89453.27885599807 For: 2FEgaOXK 131 | Indexed Article Num:11489 (~60% uploaded) Response Time (ms): 81623.22481200192 For: 9TgNAsps 132 | Indexed Article Num:11506 (~61% uploaded) Response Time (ms): 75096.30368100107 For: 9YIwnWUu 133 | Indexed Article Num:11458 (~60% uploaded) Response Time (ms): 91813.2274989998 For: zm4TWRAB 134 | Indexed Article Num:11491 (~60% uploaded) Response Time (ms): 82791.16480399854 For: guqWdl4P 135 | Indexed Article Num:11501 (~61% uploaded) Response Time (ms): 79990.75328699872 For: 1QZ3LM8v 136 | Indexed Article Num:11468 (~60% uploaded) Response Time (ms): 91002.67840799782 For: LfSR7UJ5 137 | Indexed Article Num:11467 (~60% uploaded) Response Time (ms): 91461.47308599856 For: 5IX3DTUB 138 | Indexed Article Num:11493 (~60% uploaded) Response Time (ms): 83412.02776299976 For: s6AMWmH4 139 | Indexed Article Num:11480 (~60% uploaded) Response Time (ms): 87563.93602500018 For: wY6jvIPE 140 | Indexed Article Num:11464 (~60% uploaded) Response Time (ms): 93454.39013800025 For: whXKGSD6 141 | Indexed Article Num:11470 (~60% uploaded) Response Time (ms): 92080.00822199881 For: 7jCx5Y8w 142 | Indexed Article Num:11481 (~60% uploaded) Response Time (ms): 88456.16463200096 For: zq1s4NNv 143 | Indexed Article Num:11465 (~60% uploaded) Response Time (ms): 93968.89722100087 For: WW4X6ffp 144 | Indexed Article Num:11495 (~60% uploaded) Response Time (ms): 84716.65666099917 For: YwlSfFZx 145 | Indexed Article Num:11459 (~60% uploaded) Response Time (ms): 97204.50062299985 For: 7b8bNWUN 146 | Indexed Article Num:11483 (~60% uploaded) Response Time (ms): 90883.22263399977 For: QgXwCJPh 147 | Indexed Article Num:11463 (~60% uploaded) Response Time (ms): 97554.68124599941 For: nbOPBHnr 148 | Indexed Article Num:11498 (~60% uploaded) Response Time (ms): 86641.98301600013 For: EKjzTgM9 149 | Indexed Article Num:11482 (~60% uploaded) Response Time (ms): 91954.41088499874 For: az8inpNX 150 | Indexed Article Num:11502 (~61% uploaded) Response Time (ms): 85509.3425400015 For: uy32TcF6 151 | Indexed Article Num:11507 (~61% uploaded) Response Time (ms): 83561.54543100111 For: tbUUhPF3 152 | Indexed Article Num:11488 (~60% uploaded) Response Time (ms): 91511.98292799946 For: Wa8HdyKU 153 | Indexed Article Num:11562 (~61% uploaded) Response Time (ms): 58937.69762799982 For: gVb1DXfL 154 | Indexed Article Num:11510 (~61% uploaded) Response Time (ms): 82739.11135700159 For: LeQPCwSO 155 | Indexed Article Num:11454 (~60% uploaded) Response Time (ms): 103233.65382200107 For: 02DF9fk0 156 | Indexed Article Num:11520 (~61% uploaded) Response Time (ms): 77767.25775400084 For: qgyvrAHx 157 | Indexed Article Num:11566 (~61% uploaded) Response Time (ms): 59684.4866589997 For: vleLNCq3 158 | Indexed Article Num:11497 (~60% uploaded) Response Time (ms): 91679.11292199977 For: PEFJGCTD 159 | Indexed Article Num:11509 (~61% uploaded) Response Time (ms): 86625.23971300013 For: HBaLLpjz 160 | Indexed Article Num:11492 (~60% uploaded) Response Time (ms): 93983.14406399988 For: lUZIjZm3 161 | Indexed Article Num:11494 (~60% uploaded) Response Time (ms): 93359.18918500002 For: 2VnHYitt 162 | Indexed Article Num:11527 (~61% uploaded) Response Time (ms): 74773.3951150002 For: mRFGNLtb 163 | Indexed Article Num:11534 (~61% uploaded) Response Time (ms): 73132.34957900085 For: d9DYeUFl 164 | Indexed Article Num:11531 (~61% uploaded) Response Time (ms): 75263.36357199866 For: ZpLrmeko 165 | Indexed Article Num:11525 (~61% uploaded) Response Time (ms): 80133.21677699964 For: AMRYDzGU 166 | Indexed Article Num:11515 (~61% uploaded) Response Time (ms): 86331.23773000017 For: Gc04eiQw 167 | Indexed Article Num:11533 (~61% uploaded) Response Time (ms): 75169.17702599987 For: 4umaoVRp 168 | Indexed Article Num:11539 (~61% uploaded) Response Time (ms): 73159.36736899894 For: eWmFMBHl 169 | Indexed Article Num:11485 (~60% uploaded) Response Time (ms): 99640.43807299901 For: DaXFAOu1 170 | Indexed Article Num:11505 (~61% uploaded) Response Time (ms): 92173.81080599967 For: PzZVN7ig 171 | Indexed Article Num:11543 (~61% uploaded) Response Time (ms): 72995.55539500061 For: us1nNnHX 172 | Indexed Article Num:11544 (~61% uploaded) Response Time (ms): 72964.28376999963 For: nc3K5xKe 173 | Indexed Article Num:11538 (~61% uploaded) Response Time (ms): 75661.28059699945 For: 6sMfrcOn 174 | Indexed Article Num:11499 (~61% uploaded) Response Time (ms): 97021.16904000193 For: VrewG3oX 175 | Indexed Article Num:11561 (~61% uploaded) Response Time (ms): 68271.874694 For: VejibmdL 176 | Indexed Article Num:11512 (~61% uploaded) Response Time (ms): 90463.34446000028 For: 3fys2MsP 177 | Indexed Article Num:11581 (~61% uploaded) Response Time (ms): 62425.31827199925 For: Ar8shA6w 178 | Indexed Article Num:11503 (~61% uploaded) Response Time (ms): 95864.09993000049 For: vwcQKXQG 179 | Indexed Article Num:11519 (~61% uploaded) Response Time (ms): 86795.04626900051 For: Pnlw2Ysk 180 | Indexed Article Num:11523 (~61% uploaded) Response Time (ms): 85528.564518 For: tWqtNPkb 181 | Indexed Article Num:11524 (~61% uploaded) Response Time (ms): 84932.75027299952 For: UO2r4rUN 182 | Indexed Article Num:11588 (~61% uploaded) Response Time (ms): 62828.97394900024 For: 1WlbQU2g 183 | Indexed Article Num:11557 (~61% uploaded) Response Time (ms): 74004.13181600161 For: 3E6oziFr 184 | Indexed Article Num:11513 (~61% uploaded) Response Time (ms): 94858.52593100071 For: g4knfReG 185 | Indexed Article Num:11573 (~61% uploaded) Response Time (ms): 70183.0249119997 For: gq1nQhvO 186 | Indexed Article Num:11535 (~61% uploaded) Response Time (ms): 81968.87460400164 For: H7nNE2gl 187 | Indexed Article Num:11496 (~60% uploaded) Response Time (ms): 103821.49337700102 For: tLlR92d5 188 | Indexed Article Num:11550 (~61% uploaded) Response Time (ms): 78306.22557600029 For: 8AYVvZAF 189 | Indexed Article Num:11549 (~61% uploaded) Response Time (ms): 78849.80570199993 For: k2uPTfWn 190 | Indexed Article Num:11551 (~61% uploaded) Response Time (ms): 79163.01975099929 For: zY2T8JES 191 | Indexed Article Num:11517 (~61% uploaded) Response Time (ms): 95169.9527840009 For: HqjN8VEb 192 | Indexed Article Num:11595 (~61% uploaded) Response Time (ms): 64053.35464300122 For: OpLTTDRR 193 | Indexed Article Num:11548 (~61% uploaded) Response Time (ms): 80569.76652800012 For: lbUCvqv0 194 | Indexed Article Num:11564 (~61% uploaded) Response Time (ms): 76537.15351899993 For: hj59cqoG 195 | Indexed Article Num:11500 (~61% uploaded) Response Time (ms): 106257.93552199937 For: VqgRFodG 196 | Indexed Article Num:11577 (~61% uploaded) Response Time (ms): 73421.71133999992 For: O5OgSGqW 197 | Indexed Article Num:11568 (~61% uploaded) Response Time (ms): 76520.8186460007 For: EBt4vYVi 198 | Indexed Article Num:11516 (~61% uploaded) Response Time (ms): 97963.52901499905 For: vbafJb2f 199 | Indexed Article Num:11583 (~61% uploaded) Response Time (ms): 71254.59856800083 For: MttLPe9f 200 | Indexed Article Num:11579 (~61% uploaded) Response Time (ms): 74006.43438899983 For: wkcKyg3b 201 | Indexed Article Num:11574 (~61% uploaded) Response Time (ms): 75865.29475699924 For: OuyTYDw4 202 | Indexed Article Num:11529 (~61% uploaded) Response Time (ms): 90432.48818200082 For: H6tCZJN7 203 | Indexed Article Num:11606 (~61% uploaded) Response Time (ms): 62923.268930001184 For: UMX9X1un 204 | Indexed Article Num:11594 (~61% uploaded) Response Time (ms): 67843.70379999932 For: ARXij5Dd 205 | Indexed Article Num:11570 (~61% uploaded) Response Time (ms): 78047.84416299965 For: 0pAFj00N 206 | Indexed Article Num:11553 (~61% uploaded) Response Time (ms): 82725.63501700014 For: clCk7EIC 207 | Indexed Article Num:11582 (~61% uploaded) Response Time (ms): 73555.30594399851 For: g9hfXxit 208 | Indexed Article Num:11514 (~61% uploaded) Response Time (ms): 101395.06455100048 For: BJi5RCDN 209 | Indexed Article Num:11571 (~61% uploaded) Response Time (ms): 77915.80560499988 For: ZeSYD3Go 210 | Indexed Article Num:11584 (~61% uploaded) Response Time (ms): 73659.88821899984 For: MLasxwWA 211 | Indexed Article Num:11536 (~61% uploaded) Response Time (ms): 91068.42988099996 For: Ds9jeAwt 212 | Indexed Article Num:11518 (~61% uploaded) Response Time (ms): 101273.6810169993 For: 8TaXVI4U 213 | Indexed Article Num:11556 (~61% uploaded) Response Time (ms): 84528.1990929991 For: lgDM6LiR 214 | Indexed Article Num:11542 (~61% uploaded) Response Time (ms): 88971.75539800059 For: GLF0indF 215 | Indexed Article Num:11560 (~61% uploaded) Response Time (ms): 83922.62850900088 For: R9bMowAK 216 | Indexed Article Num:11554 (~61% uploaded) Response Time (ms): 86430.40688099992 For: Bx3M41wB 217 | Indexed Article Num:11591 (~61% uploaded) Response Time (ms): 73683.69939999934 For: vFk2fFlO 218 | Indexed Article Num:11601 (~61% uploaded) Response Time (ms): 70519.1370610008 For: wIRZJuxr 219 | Indexed Article Num:11530 (~61% uploaded) Response Time (ms): 96201.87537799869 For: TaNZon6D 220 | Indexed Article Num:11532 (~61% uploaded) Response Time (ms): 95192.43632300105 For: x490Toyx 221 | Indexed Article Num:11555 (~61% uploaded) Response Time (ms): 88019.54755000025 For: CL3goS57 222 | Indexed Article Num:11546 (~61% uploaded) Response Time (ms): 90999.58314700052 For: 1C765ZGT 223 | Indexed Article Num:11552 (~61% uploaded) Response Time (ms): 89449.77155400068 For: pmfmo2qA 224 | Indexed Article Num:11545 (~61% uploaded) Response Time (ms): 91317.20369300153 For: wR2nkJcU 225 | Indexed Article Num:11537 (~61% uploaded) Response Time (ms): 94912.40655699838 For: oGC1mzvb 226 | Indexed Article Num:11575 (~61% uploaded) Response Time (ms): 83788.45577800088 For: 0WDjoWo8 227 | Indexed Article Num:11589 (~61% uploaded) Response Time (ms): 77540.9016899988 For: KVKgg0iF 228 | Indexed Article Num:11604 (~61% uploaded) Response Time (ms): 72818.45365700126 For: hF5MYMxJ 229 | Indexed Article Num:11593 (~61% uploaded) Response Time (ms): 78144.93710500095 For: HhkXuFUe 230 | Indexed Article Num:11563 (~61% uploaded) Response Time (ms): 89639.46756900009 For: f5w5Ocq6 231 | Indexed Article Num:11580 (~61% uploaded) Response Time (ms): 85672.20678300038 For: fnZpAkpK 232 | Indexed Article Num:11569 (~61% uploaded) Response Time (ms): 90695.29918500036 For: VQZyqaVQ 233 | Indexed Article Num:11559 (~61% uploaded) Response Time (ms): 93467.58020099811 For: h3OsSAmO 234 | Indexed Article Num:11608 (~61% uploaded) Response Time (ms): 75935.52684799954 For: gr7nAac1 235 | Indexed Article Num:11547 (~61% uploaded) Response Time (ms): 96972.24946700037 For: lF68F7LU 236 | Indexed Article Num:11541 (~61% uploaded) Response Time (ms): 100704.78051299974 For: ZltP6yE1 237 | Indexed Article Num:11597 (~61% uploaded) Response Time (ms): 81695.68092300091 For: S62ZARfQ 238 | Indexed Article Num:11522 (~61% uploaded) Response Time (ms): 111663.23186199926 For: 3JF4ZlgJ 239 | Indexed Article Num:11576 (~61% uploaded) Response Time (ms): 91648.75376399979 For: D1aYEfLg 240 | Indexed Article Num:11586 (~61% uploaded) Response Time (ms): 87618.18282800075 For: yaHP5Lu7 241 | Indexed Article Num:11625 (~61% uploaded) Response Time (ms): 74684.63648900017 For: lh8iKUcj 242 | Indexed Article Num:11540 (~61% uploaded) Response Time (ms): 104155.33367199916 For: CEqjkZWw 243 | Indexed Article Num:11565 (~61% uploaded) Response Time (ms): 96598.9077790007 For: Cb2ECBbj 244 | Indexed Article Num:11558 (~61% uploaded) Response Time (ms): 98662.11041999981 For: DOaXj0ej 245 | Indexed Article Num:11567 (~61% uploaded) Response Time (ms): 97070.49779199995 For: lYpyxY68 246 | Indexed Article Num:11572 (~61% uploaded) Response Time (ms): 96516.09564500023 For: zZUkn7vx 247 | Indexed Article Num:11605 (~61% uploaded) Response Time (ms): 84030.69333000015 For: bANsL7SF 248 | Indexed Article Num:11578 (~61% uploaded) Response Time (ms): 95464.22206399869 For: SCk0t9gr 249 | Indexed Article Num:11633 (~61% uploaded) Response Time (ms): 75348.08310299926 For: O6TFDM3Q 250 | Indexed Article Num:11613 (~61% uploaded) Response Time (ms): 82602.19914999884 For: wjGCxGAR 251 | Indexed Article Num:11600 (~61% uploaded) Response Time (ms): 86869.88367700018 For: G9Vfn3Ap 252 | Indexed Article Num:11587 (~61% uploaded) Response Time (ms): 93928.55844100006 For: lJya2E2u 253 | Indexed Article Num:11632 (~61% uploaded) Response Time (ms): 78926.26429199986 For: Bu5Vn4Fo 254 | Indexed Article Num:11634 (~61% uploaded) Response Time (ms): 78142.36337000132 For: QCVai8O8 255 | Indexed Article Num:11624 (~61% uploaded) Response Time (ms): 82210.0073920004 For: xkvVqIBG 256 | Indexed Article Num:11651 (~61% uploaded) Response Time (ms): 71460.46077300142 For: WAfBXsYM 257 | Indexed Article Num:11590 (~61% uploaded) Response Time (ms): 94885.22318999749 For: vYfJD9Ll 258 | Indexed Article Num:11618 (~61% uploaded) Response Time (ms): 85022.24249599967 For: G2TYF8Pe 259 | Indexed Article Num:11603 (~61% uploaded) Response Time (ms): 90141.55131100025 For: xU8rAK6H 260 | Indexed Article Num:11610 (~61% uploaded) Response Time (ms): 88026.31697500125 For: w9IBpRzL 261 | Indexed Article Num:11611 (~61% uploaded) Response Time (ms): 87586.97827400081 For: wZoRT5Sw 262 | Indexed Article Num:11623 (~61% uploaded) Response Time (ms): 84227.425942 For: rpNH5rVF 263 | Indexed Article Num:11612 (~61% uploaded) Response Time (ms): 87795.86669799965 For: WfBz8CXp 264 | Indexed Article Num:11645 (~61% uploaded) Response Time (ms): 74668.76606399938 For: NKXTvXyj 265 | Indexed Article Num:11637 (~61% uploaded) Response Time (ms): 78903.09112699982 For: FCmQ1x8h 266 | Indexed Article Num:11614 (~61% uploaded) Response Time (ms): 87137.33863000013 For: DWntqrIc 267 | Indexed Article Num:11622 (~61% uploaded) Response Time (ms): 84970.52005899884 For: aMZB2c77 268 | Indexed Article Num:11598 (~61% uploaded) Response Time (ms): 93941.76710399985 For: m5KJKoY2 269 | Indexed Article Num:11619 (~61% uploaded) Response Time (ms): 87546.35743900109 For: 7na9kvOu 270 | Indexed Article Num:11661 (~61% uploaded) Response Time (ms): 70173.0046470007 For: CwiMA8kQ 271 | Indexed Article Num:11620 (~61% uploaded) Response Time (ms): 87948.53825299907 For: mr2aKM8H 272 | Indexed Article Num:11643 (~61% uploaded) Response Time (ms): 78446.22504800092 For: hv7mKOdy 273 | Indexed Article Num:11638 (~61% uploaded) Response Time (ms): 80443.28739299905 For: BVpHHTtc 274 | Indexed Article Num:11636 (~61% uploaded) Response Time (ms): 82596.86803899985 For: 4vECOBJ8 275 | Indexed Article Num:11602 (~61% uploaded) Response Time (ms): 94263.36888699979 For: UPktp7qY 276 | Indexed Article Num:11585 (~61% uploaded) Response Time (ms): 101877.01255299989 For: j5VvlFjv 277 | Indexed Article Num:11659 (~61% uploaded) Response Time (ms): 72650.65986899938 For: ZY2pmtwc 278 | Indexed Article Num:11592 (~61% uploaded) Response Time (ms): 99204.04975300096 For: Ah6gk8FU 279 | Indexed Article Num:11639 (~61% uploaded) Response Time (ms): 81132.35015200078 For: QUbo2Txt 280 | Indexed Article Num:11621 (~61% uploaded) Response Time (ms): 89401.9161129985 For: thQI5KEM 281 | Indexed Article Num:11628 (~61% uploaded) Response Time (ms): 87993.89574400056 For: 1MYFbAOR 282 | Indexed Article Num:11648 (~61% uploaded) Response Time (ms): 79016.29313600063 For: 6WIuT4DG 283 | Indexed Article Num:11631 (~61% uploaded) Response Time (ms): 86643.82245199848 For: FQsxjDVh 284 | Indexed Article Num:11609 (~61% uploaded) Response Time (ms): 94807.76241900027 For: zY297wP2 285 | Indexed Article Num:11694 (~62% uploaded) Response Time (ms): 56473.5374090001 For: Sfu50r2N 286 | Indexed Article Num:11680 (~61% uploaded) Response Time (ms): 63561.76727900095 For: eCWZIgga 287 | Indexed Article Num:11640 (~61% uploaded) Response Time (ms): 84625.6177009996 For: mbD8PRZF 288 | Indexed Article Num:11652 (~61% uploaded) Response Time (ms): 80820.33034599945 For: ffrGrXzr 289 | Indexed Article Num:11607 (~61% uploaded) Response Time (ms): 97878.70541500021 For: J42bUnsy 290 | Indexed Article Num:11616 (~61% uploaded) Response Time (ms): 95379.27448699903 For: ipMC4IFL 291 | Indexed Article Num:11642 (~61% uploaded) Response Time (ms): 85518.05432900041 For: faxg0gKT 292 | Indexed Article Num:11626 (~61% uploaded) Response Time (ms): 93992.90242499951 For: Y5c4tH2h 293 | Indexed Article Num:11672 (~61% uploaded) Response Time (ms): 72557.84515099972 For: Fm28f407 294 | Indexed Article Num:11615 (~61% uploaded) Response Time (ms): 98823.56122899987 For: JJ4P9ygR 295 | Indexed Article Num:11627 (~61% uploaded) Response Time (ms): 95448.96037699934 For: y9S7Yswh 296 | Indexed Article Num:11617 (~61% uploaded) Response Time (ms): 98834.37611700036 For: 41PL8RJQ 297 | Indexed Article Num:11596 (~61% uploaded) Response Time (ms): 106482.53740999848 For: Ca7ZhGDf 298 | Indexed Article Num:11599 (~61% uploaded) Response Time (ms): 105295.6093580015 For: 0HSDrtu2 299 | Indexed Article Num:11629 (~61% uploaded) Response Time (ms): 95509.71411699988 For: aFgqyHU3 300 | Indexed Article Num:11705 (~62% uploaded) Response Time (ms): 57999.73305699881 For: z2KF22Na 301 | Indexed Article Num:11653 (~61% uploaded) Response Time (ms): 85873.88417700026 For: cHTn4FMm 302 | Indexed Article Num:11669 (~61% uploaded) Response Time (ms): 80157.3948359983 For: yTjrT7Tz 303 | Indexed Article Num:11641 (~61% uploaded) Response Time (ms): 93906.83157599997 For: N6dcEQIs 304 | Indexed Article Num:11655 (~61% uploaded) Response Time (ms): 89895.26792899985 For: 1y8UrFB2 305 | Indexed Article Num:11654 (~61% uploaded) Response Time (ms): 91093.85004299972 For: 16JjuA7Y 306 | Indexed Article Num:11671 (~61% uploaded) Response Time (ms): 80692.62114200089 For: 5Pm00CrL 307 | Indexed Article Num:11644 (~61% uploaded) Response Time (ms): 95123.24073700048 For: m2wYmEoI 308 | Indexed Article Num:11647 (~61% uploaded) Response Time (ms): 94017.54633299913 For: kOU8s4ei 309 | Indexed Article Num:11663 (~61% uploaded) Response Time (ms): 87038.02368800063 For: kR9fwlsh 310 | Indexed Article Num:11649 (~61% uploaded) Response Time (ms): 94413.70323299896 For: Kvg67ver 311 | Indexed Article Num:11650 (~61% uploaded) Response Time (ms): 93980.58891899977 For: zcGOHLHZ 312 | Indexed Article Num:11702 (~62% uploaded) Response Time (ms): 66500.36813899968 For: 7RtJML9i 313 | Indexed Article Num:11635 (~61% uploaded) Response Time (ms): 102418.83659199998 For: J6aEZioS 314 | Indexed Article Num:11686 (~61% uploaded) Response Time (ms): 77035.44595099892 For: IZEm9UGB 315 | Indexed Article Num:11716 (~62% uploaded) Response Time (ms): 63313.43188000005 For: hoMBgpYa 316 | Indexed Article Num:11706 (~62% uploaded) Response Time (ms): 69615.79912000056 For: 9FVaArcS 317 | Indexed Article Num:11657 (~61% uploaded) Response Time (ms): 95846.2238559993 For: HxpKuof3 318 | Indexed Article Num:11658 (~61% uploaded) Response Time (ms): 96176.71520600002 For: 7OHAFBG6 319 | Indexed Article Num:11700 (~62% uploaded) Response Time (ms): 73621.23929699976 For: L4SMtqHC 320 | Indexed Article Num:11689 (~62% uploaded) Response Time (ms): 78295.65617300197 For: TiyBV1fY 321 | Indexed Article Num:11721 (~62% uploaded) Response Time (ms): 64172.25780599937 For: o7UJOrMH 322 | Indexed Article Num:11693 (~62% uploaded) Response Time (ms): 76922.4025100004 For: TqICJx3w 323 | Indexed Article Num:11731 (~62% uploaded) Response Time (ms): 59875.18413800001 For: kji4vBeZ 324 | Indexed Article Num:11714 (~62% uploaded) Response Time (ms): 67928.15356900077 For: 9LfBCTW7 325 | Indexed Article Num:11725 (~62% uploaded) Response Time (ms): 62370.28624899965 For: rrlj5HxJ 326 | Indexed Article Num:11660 (~61% uploaded) Response Time (ms): 95521.92901299987 For: uBbf1NZK 327 | Indexed Article Num:11687 (~62% uploaded) Response Time (ms): 80307.87338699866 For: 5Ui3VlgP 328 | Indexed Article Num:11675 (~61% uploaded) Response Time (ms): 87668.7488419991 For: 012PlB45 329 | Indexed Article Num:11656 (~61% uploaded) Response Time (ms): 99166.78932499886 For: HIRE7Cbk 330 | Indexed Article Num:11711 (~62% uploaded) Response Time (ms): 70862.8142610006 For: BuFHu3oc 331 | Indexed Article Num:11677 (~61% uploaded) Response Time (ms): 86952.13233099971 For: I21b5QOH 332 | Indexed Article Num:11673 (~61% uploaded) Response Time (ms): 89439.33090099972 For: hH0Te1nr 333 | Indexed Article Num:11698 (~62% uploaded) Response Time (ms): 77331.65936299972 For: T17uUmmo 334 | Indexed Article Num:11697 (~62% uploaded) Response Time (ms): 77684.70428999886 For: D0q23m4F 335 | Indexed Article Num:11704 (~62% uploaded) Response Time (ms): 74737.30883299932 For: 1cHNfSfD 336 | Indexed Article Num:11630 (~61% uploaded) Response Time (ms): 111873.65542699955 For: JCVkbNOy 337 | Indexed Article Num:11684 (~61% uploaded) Response Time (ms): 85329.98737400118 For: jr1t8g7U 338 | Indexed Article Num:11688 (~62% uploaded) Response Time (ms): 82707.2162379995 For: vuaud7rs 339 | Indexed Article Num:11670 (~61% uploaded) Response Time (ms): 94450.98536100052 For: v4GBqAE3 340 | Indexed Article Num:11691 (~62% uploaded) Response Time (ms): 84092.79412200022 For: Go41cuhD 341 | Indexed Article Num:11646 (~61% uploaded) Response Time (ms): 108033.20667900052 For: 3YnKDVQI 342 | Indexed Article Num:11666 (~61% uploaded) Response Time (ms): 98454.88913999964 For: rA2ZZpfk 343 | Indexed Article Num:11667 (~61% uploaded) Response Time (ms): 99283.74885199964 For: RM80t6dq 344 | Indexed Article Num:11690 (~62% uploaded) Response Time (ms): 87090.74210899882 For: FwL22MNx 345 | Indexed Article Num:11699 (~62% uploaded) Response Time (ms): 83887.89537800103 For: rnQUBXeG 346 | Indexed Article Num:11662 (~61% uploaded) Response Time (ms): 104425.09293999895 For: YpR3iMy4 347 | Indexed Article Num:11679 (~61% uploaded) Response Time (ms): 94342.84531400073 For: B6WfSdjU 348 | Indexed Article Num:11708 (~62% uploaded) Response Time (ms): 81363.52878499962 For: 0kwoUjPu 349 | Indexed Article Num:11696 (~62% uploaded) Response Time (ms): 86277.17215499934 For: 85PwmGj4 350 | Indexed Article Num:11720 (~62% uploaded) Response Time (ms): 75478.50201099925 For: xoOs0KPt 351 | Indexed Article Num:11713 (~62% uploaded) Response Time (ms): 79175.08314699959 For: bA6RBHl8 352 | Indexed Article Num:11729 (~62% uploaded) Response Time (ms): 72638.33650599886 For: 1nHjEgLk 353 | Indexed Article Num:11664 (~61% uploaded) Response Time (ms): 105449.53237400018 For: OZ31z4G4 354 | Indexed Article Num:11685 (~61% uploaded) Response Time (ms): 93226.4410329992 For: 8bFGpqyS 355 | Indexed Article Num:11692 (~62% uploaded) Response Time (ms): 90227.5685109999 For: HFxPaFHO 356 | Indexed Article Num:11718 (~62% uploaded) Response Time (ms): 79594.6976170009 For: AHBjXQAP 357 | Indexed Article Num:11712 (~62% uploaded) Response Time (ms): 83035.62879000045 For: wCVxppZ0 358 | Indexed Article Num:11710 (~62% uploaded) Response Time (ms): 83698.7469740007 For: vixns1fR 359 | Indexed Article Num:11715 (~62% uploaded) Response Time (ms): 81552.92932199873 For: mL2rtg5k 360 | Indexed Article Num:11682 (~61% uploaded) Response Time (ms): 97542.98128900025 For: qlzH1bmf 361 | Indexed Article Num:11695 (~62% uploaded) Response Time (ms): 91621.96703299973 For: lfUumvsz 362 | Indexed Article Num:11668 (~61% uploaded) Response Time (ms): 105758.20148999896 For: ZGQbFjN7 363 | Indexed Article Num:11681 (~61% uploaded) Response Time (ms): 98412.77262100019 For: pD58Cyjd 364 | Indexed Article Num:11727 (~62% uploaded) Response Time (ms): 76984.46060500015 For: PQFSLNHJ 365 | Indexed Article Num:11674 (~61% uploaded) Response Time (ms): 103891.74324500095 For: wcSI1VUY 366 | Indexed Article Num:11719 (~62% uploaded) Response Time (ms): 83301.83716300037 For: LZtPgiKm 367 | Indexed Article Num:11732 (~62% uploaded) Response Time (ms): 77888.53128400072 For: 5QMWvA7L 368 | Indexed Article Num:11739 (~62% uploaded) Response Time (ms): 74307.4211630011 For: cDzoA5Tk 369 | Indexed Article Num:11750 (~62% uploaded) Response Time (ms): 68161.37683099974 For: nO2OLRAD 370 | Indexed Article Num:11734 (~62% uploaded) Response Time (ms): 77772.724049001 For: qSHOVVHr 371 | Indexed Article Num:11726 (~62% uploaded) Response Time (ms): 81252.2319210004 For: cHB4cS2U 372 | Indexed Article Num:11665 (~61% uploaded) Response Time (ms): 113206.26367999893 For: bPQ0VMwe 373 | Indexed Article Num:11707 (~62% uploaded) Response Time (ms): 91636.9707340002 For: diemCG7s 374 | Indexed Article Num:11703 (~62% uploaded) Response Time (ms): 93542.68009900022 For: Th7pJfXu 375 | Indexed Article Num:11709 (~62% uploaded) Response Time (ms): 92110.81739500072 For: HwGCRW9f 376 | Indexed Article Num:11737 (~62% uploaded) Response Time (ms): 79577.9903510008 For: bhxDrgZS 377 | Indexed Article Num:11678 (~61% uploaded) Response Time (ms): 107281.97663400043 For: 7mmdXlyx 378 | Indexed Article Num:11746 (~62% uploaded) Response Time (ms): 75328.25378499925 For: 70j3eONa 379 | Indexed Article Num:11676 (~61% uploaded) Response Time (ms): 109287.04302900098 For: qoPy4vX8 380 | Indexed Article Num:11730 (~62% uploaded) Response Time (ms): 84360.60749000125 For: C1XyX3BI 381 | Indexed Article Num:11736 (~62% uploaded) Response Time (ms): 83832.84024100006 For: H4jfoySE 382 | Indexed Article Num:11755 (~62% uploaded) Response Time (ms): 73701.87560500018 For: GQDGcJv0 383 | Indexed Article Num:11749 (~62% uploaded) Response Time (ms): 80755.87204199936 For: 6VNC1Ef1 384 | Indexed Article Num:11748 (~62% uploaded) Response Time (ms): 81367.37013099901 For: 1qtIgMi8 385 | Indexed Article Num:11683 (~61% uploaded) Response Time (ms): 112728.09049300011 For: PNgUUZEc 386 | Indexed Article Num:11754 (~62% uploaded) Response Time (ms): 79422.29526799917 For: qKEw3Yv7 387 | Indexed Article Num:11701 (~62% uploaded) Response Time (ms): 104678.79257499985 For: Fyvx7dkf 388 | Indexed Article Num:11728 (~62% uploaded) Response Time (ms): 94208.81190299895 For: SC5mMKa9 389 | Indexed Article Num:11717 (~62% uploaded) Response Time (ms): 99009.11606100108 For: ppQo7LTX 390 | Indexed Article Num:11742 (~62% uploaded) Response Time (ms): 87863.48543899972 For: pSuRclYy 391 | Indexed Article Num:11723 (~62% uploaded) Response Time (ms): 98286.79620000068 For: M1kBdWgd 392 | Indexed Article Num:11722 (~62% uploaded) Response Time (ms): 98856.36171399988 For: C49RMEwe 393 | Indexed Article Num:11733 (~62% uploaded) Response Time (ms): 95541.23221600056 For: RGdaco2x 394 | Indexed Article Num:11743 (~62% uploaded) Response Time (ms): 90229.09804499894 For: NQnViJXQ 395 | Indexed Article Num:11757 (~62% uploaded) Response Time (ms): 84472.45797400083 For: cWVskBvy 396 | Indexed Article Num:11752 (~62% uploaded) Response Time (ms): 87911.57224500086 For: pyzaw8om 397 | Indexed Article Num:11724 (~62% uploaded) Response Time (ms): 101844.14234799799 For: 3PyNUHDL 398 | Indexed Article Num:11765 (~62% uploaded) Response Time (ms): 81166.91096900031 For: fUWI2jnR 399 | Indexed Article Num:11741 (~62% uploaded) Response Time (ms): 97721.44365400076 For: WWzDsBeY 400 | Indexed Article Num:11761 (~62% uploaded) Response Time (ms): 87210.40936599951 For: qqtQrxDs 401 | Indexed Article Num:11751 (~62% uploaded) Response Time (ms): 92384.92738400027 For: rR9drww3 402 | Indexed Article Num:11768 (~62% uploaded) Response Time (ms): 83907.17388899997 For: h2uFvdzQ 403 | Indexed Article Num:11735 (~62% uploaded) Response Time (ms): 102607.9466560008 For: p3yHUJkz 404 | Indexed Article Num:11747 (~62% uploaded) Response Time (ms): 96142.43098000064 For: mxLZQrEn 405 | Indexed Article Num:11763 (~62% uploaded) Response Time (ms): 89373.75017999951 For: M1HpuyQR 406 | Indexed Article Num:11802 (~62% uploaded) Response Time (ms): 69420.30666200072 For: vJfiKvRa 407 | Indexed Article Num:11786 (~62% uploaded) Response Time (ms): 76495.28229000047 For: 6jFI7s7N 408 | Indexed Article Num:11791 (~62% uploaded) Response Time (ms): 74190.87183800153 For: uDA6TBx1 409 | Indexed Article Num:11794 (~62% uploaded) Response Time (ms): 72771.70216800086 For: pOOSJHER 410 | Indexed Article Num:11758 (~62% uploaded) Response Time (ms): 92681.6310329996 For: qhtxCN3p 411 | Indexed Article Num:11787 (~62% uploaded) Response Time (ms): 76204.8265010016 For: rqsvfgE3 412 | Indexed Article Num:11780 (~62% uploaded) Response Time (ms): 80150.57184900064 For: mAM8Nuo0 413 | Indexed Article Num:11803 (~62% uploaded) Response Time (ms): 69391.52486000024 For: XNIC005i 414 | Indexed Article Num:11814 (~62% uploaded) Response Time (ms): 64234.51050999947 For: RL2ILBvD 415 | Indexed Article Num:11827 (~62% uploaded) Response Time (ms): 58714.1328800004 For: BD07cSvE 416 | Indexed Article Num:11782 (~62% uploaded) Response Time (ms): 79823.24364400096 For: jH2tKq3r 417 | Indexed Article Num:11790 (~62% uploaded) Response Time (ms): 75807.47982400097 For: hlVzrrNu 418 | Indexed Article Num:11836 (~62% uploaded) Response Time (ms): 54930.41471000016 For: Rgspkm3U 419 | Indexed Article Num:11769 (~62% uploaded) Response Time (ms): 87888.74212600011 For: nm6LN6A8 420 | Indexed Article Num:11800 (~62% uploaded) Response Time (ms): 72955.8855579989 For: vZduGVEI 421 | Indexed Article Num:11771 (~62% uploaded) Response Time (ms): 87152.37067399919 For: Bcx09ZFq 422 | Indexed Article Num:11767 (~62% uploaded) Response Time (ms): 89789.22176299896 For: dCiCZ5cD 423 | Indexed Article Num:11823 (~62% uploaded) Response Time (ms): 62179.51473500021 For: T7JHLByk 424 | Indexed Article Num:11831 (~62% uploaded) Response Time (ms): 58929.356329000555 For: 3mJU2yM9 425 | Indexed Article Num:11789 (~62% uploaded) Response Time (ms): 78426.33432000037 For: BkSOcrvO 426 | Indexed Article Num:11796 (~62% uploaded) Response Time (ms): 76211.15589199867 For: uFUwJ7FP 427 | Indexed Article Num:11756 (~62% uploaded) Response Time (ms): 97605.47176999971 For: cXMlX737 428 | Indexed Article Num:11788 (~62% uploaded) Response Time (ms): 79692.72126199957 For: BwISkbhi 429 | Indexed Article Num:11785 (~62% uploaded) Response Time (ms): 81233.39124699961 For: 27ujEQHg 430 | Indexed Article Num:11760 (~62% uploaded) Response Time (ms): 96143.5173210008 For: mMwYqrIN 431 | Indexed Article Num:11795 (~62% uploaded) Response Time (ms): 77186.10924600065 For: TpW5ZYPv 432 | Indexed Article Num:11781 (~62% uploaded) Response Time (ms): 83987.7499569999 For: JqQ5C9WQ 433 | Indexed Article Num:11774 (~62% uploaded) Response Time (ms): 87646.76113600098 For: fCOxx6cJ 434 | Indexed Article Num:11778 (~62% uploaded) Response Time (ms): 85771.44882099982 For: D7BDushI 435 | Indexed Article Num:11770 (~62% uploaded) Response Time (ms): 90411.10541399848 For: f2fA4qT5 436 | Indexed Article Num:11738 (~62% uploaded) Response Time (ms): 108219.75244299974 For: FXXfV2qF 437 | Indexed Article Num:11776 (~62% uploaded) Response Time (ms): 87057.87208099943 For: 9Gh2BtEH 438 | Indexed Article Num:11745 (~62% uploaded) Response Time (ms): 104958.5684580002 For: gmTZZ6uV 439 | Indexed Article Num:11740 (~62% uploaded) Response Time (ms): 108200.02768300008 For: Ha0E3Kcv 440 | Indexed Article Num:11775 (~62% uploaded) Response Time (ms): 88632.45778000075 For: vzqp0TPQ 441 | Indexed Article Num:11809 (~62% uploaded) Response Time (ms): 72877.13261399977 For: UNJ5qRIJ 442 | Indexed Article Num:11784 (~62% uploaded) Response Time (ms): 84172.41344199982 For: ccU0LGcj 443 | Indexed Article Num:11762 (~62% uploaded) Response Time (ms): 97208.90182899963 For: IZreG5sJ 444 | Indexed Article Num:11753 (~62% uploaded) Response Time (ms): 102370.05389299989 For: w5f3C8n8 445 | Indexed Article Num:11793 (~62% uploaded) Response Time (ms): 80953.0089289993 For: 0DoZsSNS 446 | Indexed Article Num:11759 (~62% uploaded) Response Time (ms): 100986.6503620008 For: SAMbmsGO 447 | Indexed Article Num:11773 (~62% uploaded) Response Time (ms): 92409.27167499904 For: bkI2Qv3J 448 | Indexed Article Num:11805 (~62% uploaded) Response Time (ms): 77479.275134 For: 4MmTDbsW 449 | Indexed Article Num:11779 (~62% uploaded) Response Time (ms): 89583.5088810008 For: dR3mTa1i 450 | Indexed Article Num:11812 (~62% uploaded) Response Time (ms): 73713.71079700161 For: ZCu9IuCc 451 | Indexed Article Num:11783 (~62% uploaded) Response Time (ms): 88915.51830900181 For: yE11hpPH 452 | Indexed Article Num:11772 (~62% uploaded) Response Time (ms): 95205.60649699904 For: bO4a37HO 453 | Indexed Article Num:11764 (~62% uploaded) Response Time (ms): 100128.86350400094 For: d4YleRjU 454 | Indexed Article Num:11766 (~62% uploaded) Response Time (ms): 99464.97477699816 For: BesXBADE 455 | Indexed Article Num:11806 (~62% uploaded) Response Time (ms): 79580.29991200007 For: jOb8MIDx 456 | Indexed Article Num:11792 (~62% uploaded) Response Time (ms): 85671.80941500049 For: kRTWATP3 457 | Indexed Article Num:11807 (~62% uploaded) Response Time (ms): 79366.43588700052 For: CFezihRQ 458 | Indexed Article Num:11777 (~62% uploaded) Response Time (ms): 94256.54768200032 For: o2FPP0ln 459 | Indexed Article Num:11829 (~62% uploaded) Response Time (ms): 69869.25299300067 For: 6s2jiD5i 460 | Indexed Article Num:11744 (~62% uploaded) Response Time (ms): 113556.83689699695 For: akJusMbL 461 | Indexed Article Num:11808 (~62% uploaded) Response Time (ms): 82508.27169300057 For: KZQMAiEN 462 | Indexed Article Num:11801 (~62% uploaded) Response Time (ms): 86826.49497400038 For: KKPodbt4 463 | Indexed Article Num:11817 (~62% uploaded) Response Time (ms): 79189.9730700003 For: QS7vFPe2 464 | Indexed Article Num:11839 (~62% uploaded) Response Time (ms): 70441.11781800073 For: P7IKOPeQ 465 | Indexed Article Num:11797 (~62% uploaded) Response Time (ms): 90649.21289200056 For: AvZScTmR 466 | Indexed Article Num:11853 (~62% uploaded) Response Time (ms): 62642.67417099979 For: oOwm0SlG 467 | Indexed Article Num:11804 (~62% uploaded) Response Time (ms): 90005.24971799925 For: Y5FQBZdx 468 | Indexed Article Num:11822 (~62% uploaded) Response Time (ms): 80751.98730099853 For: G8ZBlLaT 469 | Indexed Article Num:11819 (~62% uploaded) Response Time (ms): 82484.63200100046 For: gWvpmNob 470 | Indexed Article Num:11821 (~62% uploaded) Response Time (ms): 81885.94576499984 For: gmUaLInY 471 | Indexed Article Num:11832 (~62% uploaded) Response Time (ms): 77726.22464999929 For: SIfgEboy 472 | Indexed Article Num:11798 (~62% uploaded) Response Time (ms): 94888.01353299804 For: CgDOWUCc 473 | Indexed Article Num:11824 (~62% uploaded) Response Time (ms): 81853.19790299889 For: 9l5RSDYu 474 | Indexed Article Num:11825 (~62% uploaded) Response Time (ms): 81757.83160999976 For: Of3npfsR 475 | Indexed Article Num:11843 (~62% uploaded) Response Time (ms): 72430.781107001 For: iJ8R15kt 476 | Indexed Article Num:11820 (~62% uploaded) Response Time (ms): 83856.487790999 For: GTnqntGb 477 | Indexed Article Num:11842 (~62% uploaded) Response Time (ms): 73916.06637100037 For: 6sOwQX71 478 | Indexed Article Num:11840 (~62% uploaded) Response Time (ms): 75874.40934799984 For: 35NzCFFz 479 | Indexed Article Num:11813 (~62% uploaded) Response Time (ms): 88703.25590100046 For: 9l3dAxZ5 480 | Indexed Article Num:11799 (~62% uploaded) Response Time (ms): 97099.36238999944 For: IrWFpAQV 481 | Indexed Article Num:11844 (~62% uploaded) Response Time (ms): 76520.8338829996 For: wAx8wBSO 482 | Indexed Article Num:11818 (~62% uploaded) Response Time (ms): 90365.79517400078 For: 6UWdOX1V 483 | Indexed Article Num:11854 (~62% uploaded) Response Time (ms): 73023.63761600014 For: 9fnd2XQc 484 | Indexed Article Num:11860 (~62% uploaded) Response Time (ms): 70354.45898999926 For: P9XL3M9m 485 | Indexed Article Num:11816 (~62% uploaded) Response Time (ms): 93087.43401599955 For: mlQcOZVP 486 | Indexed Article Num:11826 (~62% uploaded) Response Time (ms): 89252.09889900032 For: zzTPFsow 487 | Indexed Article Num:11850 (~62% uploaded) Response Time (ms): 77713.05991700012 For: 1IFC5QR2 488 | Indexed Article Num:11830 (~62% uploaded) Response Time (ms): 89566.59743900131 For: 4dwihwG6 489 | Indexed Article Num:11857 (~62% uploaded) Response Time (ms): 76994.55447300058 For: HyVS7wcf 490 | Indexed Article Num:11833 (~62% uploaded) Response Time (ms): 90200.1180250002 For: iCO6QgKa 491 | Indexed Article Num:11870 (~62% uploaded) Response Time (ms): 70704.42647100054 For: PM0gF98t 492 | Indexed Article Num:11851 (~62% uploaded) Response Time (ms): 81295.16361500137 For: a5nxzPaf 493 | Indexed Article Num:11855 (~62% uploaded) Response Time (ms): 80698.15930099972 For: snRGsd6t 494 | Indexed Article Num:11847 (~62% uploaded) Response Time (ms): 84072.36213500053 For: p2g2EtEc 495 | Indexed Article Num:11846 (~62% uploaded) Response Time (ms): 85157.92361900024 For: GCE7yYXP 496 | Indexed Article Num:11828 (~62% uploaded) Response Time (ms): 95979.79878500104 For: x9cv4pU3 497 | Indexed Article Num:11874 (~62% uploaded) Response Time (ms): 71581.8838489987 For: bsQdjPln 498 | Indexed Article Num:11861 (~62% uploaded) Response Time (ms): 78224.83828600124 For: 13SwGz8g 499 | Indexed Article Num:11862 (~62% uploaded) Response Time (ms): 77965.3186370004 For: oIfKBzv5 500 | Indexed Article Num:11871 (~62% uploaded) Response Time (ms): 74191.73352799937 For: PUSsIyLK 501 | Indexed Article Num:11845 (~62% uploaded) Response Time (ms): 87369.50558100082 For: xq6TbJgo 502 | Indexed Article Num:11852 (~62% uploaded) Response Time (ms): 83819.11858099978 For: OoHAObl6 503 | Indexed Article Num:11838 (~62% uploaded) Response Time (ms): 92771.81666800007 For: QKDLfGRI 504 | Indexed Article Num:11890 (~63% uploaded) Response Time (ms): 59065.28580699954 For: 23tcGJS7 505 | Indexed Article Num:11859 (~62% uploaded) Response Time (ms): 81450.17490100116 For: nqyl5VqQ 506 | Indexed Article Num:11811 (~62% uploaded) Response Time (ms): 106214.93867500033 For: YQHjVxm0 507 | Indexed Article Num:11882 (~63% uploaded) Response Time (ms): 65117.450190000236 For: 6pF9iZn0 508 | Indexed Article Num:11858 (~62% uploaded) Response Time (ms): 83309.5098279994 For: p8CMKw5r 509 | Indexed Article Num:11837 (~62% uploaded) Response Time (ms): 94829.83603199944 For: nbBWO66o 510 | Indexed Article Num:11863 (~62% uploaded) Response Time (ms): 80899.97779900022 For: AyPaL8aX 511 | Indexed Article Num:11867 (~62% uploaded) Response Time (ms): 78975.80275799986 For: EtfWC3Xw 512 | Indexed Article Num:11835 (~62% uploaded) Response Time (ms): 97293.78450800013 For: GIhH1gju 513 | Indexed Article Num:11866 (~62% uploaded) Response Time (ms): 80236.73523700051 For: GAprpGWB 514 | Indexed Article Num:11815 (~62% uploaded) Response Time (ms): 107279.56522900052 For: qn7CH4wF 515 | Indexed Article Num:11810 (~62% uploaded) Response Time (ms): 110232.69048700109 For: 0nj4MwtE 516 | Indexed Article Num:11841 (~62% uploaded) Response Time (ms): 95410.59513699915 For: DzSsLwUW 517 | Indexed Article Num:11834 (~62% uploaded) Response Time (ms): 103754.0517640002 For: 9iE9kJJG 518 | Indexed Article Num:11869 (~62% uploaded) Response Time (ms): 87090.53443 For: tZgpUXkI 519 | Indexed Article Num:11877 (~63% uploaded) Response Time (ms): 78248.19704499934 For: qEGMif7c 520 | Indexed Article Num:11864 (~62% uploaded) Response Time (ms): 90859.21447 For: HMnwNnby 521 | Indexed Article Num:11925 (~63% uploaded) Response Time (ms): 53315.80275399983 For: ekMSt0IS 522 | Indexed Article Num:11865 (~62% uploaded) Response Time (ms): 90745.11045200098 For: LQT3bQGy 523 | Indexed Article Num:11856 (~62% uploaded) Response Time (ms): 97072.0776219992 For: XEjfDlYc 524 | Indexed Article Num:11872 (~62% uploaded) Response Time (ms): 88801.8786960002 For: ZtmEy4X6 525 | Indexed Article Num:11848 (~62% uploaded) Response Time (ms): 100838.18334699981 For: lZpqv1fo 526 | Indexed Article Num:11873 (~62% uploaded) Response Time (ms): 88449.88304099906 For: wpePKlJz 527 | Indexed Article Num:11886 (~63% uploaded) Response Time (ms): 76945.74663600046 For: RoMjFRKp 528 | Indexed Article Num:11920 (~63% uploaded) Response Time (ms): 60438.139143998735 For: yQdrVdBn 529 | Indexed Article Num:11849 (~62% uploaded) Response Time (ms): 102771.6221829988 For: rS1SzhkN 530 | Indexed Article Num:11868 (~62% uploaded) Response Time (ms): 92967.03666699957 For: bZNSFeEm 531 | Indexed Article Num:11885 (~63% uploaded) Response Time (ms): 79744.22963800095 For: oGTVPYjc 532 | Indexed Article Num:11910 (~63% uploaded) Response Time (ms): 66795.32768500037 For: 68YkXAQJ 533 | Indexed Article Num:11876 (~63% uploaded) Response Time (ms): 87137.88244900107 For: ZCkQRfmQ 534 | Indexed Article Num:11889 (~63% uploaded) Response Time (ms): 79475.66268899944 For: 3iWNE6YI 535 | Indexed Article Num:11896 (~63% uploaded) Response Time (ms): 76863.64392300136 For: mSCWibkG 536 | Indexed Article Num:11899 (~63% uploaded) Response Time (ms): 76824.72863299958 For: bt0ifH9M 537 | Indexed Article Num:11906 (~63% uploaded) Response Time (ms): 73669.18139600009 For: OLNXGMBr 538 | Indexed Article Num:11893 (~63% uploaded) Response Time (ms): 82795.91969599854 For: v96moE5K 539 | Indexed Article Num:11888 (~63% uploaded) Response Time (ms): 85779.13683500048 For: 6DorYr3M 540 | Indexed Article Num:11875 (~62% uploaded) Response Time (ms): 97596.50282799918 For: tMmJH7TU 541 | Indexed Article Num:11912 (~63% uploaded) Response Time (ms): 73739.060207 For: YG5cscnp 542 | Indexed Article Num:11903 (~63% uploaded) Response Time (ms): 78646.80929799937 For: dPmAfTWT 543 | Indexed Article Num:11916 (~63% uploaded) Response Time (ms): 72407.26680600084 For: EcknZYJA 544 | Indexed Article Num:11904 (~63% uploaded) Response Time (ms): 78133.54219700117 For: vpy3z5aD 545 | Indexed Article Num:11908 (~63% uploaded) Response Time (ms): 76773.61716199946 For: 8cqqon2Q 546 | Indexed Article Num:11884 (~63% uploaded) Response Time (ms): 90824.9699769998 For: J73IreRL 547 | Indexed Article Num:11881 (~63% uploaded) Response Time (ms): 92476.86640799977 For: mfsA61u3 548 | Indexed Article Num:11894 (~63% uploaded) Response Time (ms): 84880.45355700143 For: yWimBd4w 549 | Indexed Article Num:11895 (~63% uploaded) Response Time (ms): 84731.48279199935 For: E1RKb9pe 550 | Indexed Article Num:11936 (~63% uploaded) Response Time (ms): 64709.701079998165 For: Ffu6Pom1 551 | Indexed Article Num:11892 (~63% uploaded) Response Time (ms): 87067.04840499908 For: NqUf6ztt 552 | Indexed Article Num:11878 (~63% uploaded) Response Time (ms): 95688.62043499853 For: 0nO5yQKY 553 | Indexed Article Num:11891 (~63% uploaded) Response Time (ms): 88335.26159500144 For: 37mJv2D7 554 | Indexed Article Num:11897 (~63% uploaded) Response Time (ms): 84869.4212460015 For: v0qXZGsq 555 | Indexed Article Num:11942 (~63% uploaded) Response Time (ms): 62710.24963399954 For: NUUYKmY2 556 | Indexed Article Num:11880 (~63% uploaded) Response Time (ms): 95026.2234720001 For: lKcU6z7x 557 | Indexed Article Num:11914 (~63% uploaded) Response Time (ms): 76767.86359199975 For: n55NWq3S 558 | Indexed Article Num:11898 (~63% uploaded) Response Time (ms): 87363.21035699919 For: U60x0KK5 559 | Indexed Article Num:11915 (~63% uploaded) Response Time (ms): 78813.87533800025 For: jUi1wkAX 560 | Indexed Article Num:11927 (~63% uploaded) Response Time (ms): 72874.88808499835 For: 2FPGfW6o 561 | Indexed Article Num:11879 (~63% uploaded) Response Time (ms): 100554.68654399924 For: gyvczzM3 562 | Indexed Article Num:11883 (~63% uploaded) Response Time (ms): 98436.60967199877 For: j4ujaNmv 563 | Indexed Article Num:11929 (~63% uploaded) Response Time (ms): 73957.6098509999 For: l16mkBj2 564 | Indexed Article Num:11887 (~63% uploaded) Response Time (ms): 96186.81810899824 For: Ncr9fLNC 565 | Indexed Article Num:11923 (~63% uploaded) Response Time (ms): 77492.58146600146 For: aM5oKH9k 566 | Indexed Article Num:11924 (~63% uploaded) Response Time (ms): 77358.26946100034 For: NjoBmGpL 567 | Indexed Article Num:11917 (~63% uploaded) Response Time (ms): 81478.70133899804 For: qcHHK3YU 568 | Indexed Article Num:11907 (~63% uploaded) Response Time (ms): 85763.73799000122 For: O1AuZrES 569 | Indexed Article Num:11926 (~63% uploaded) Response Time (ms): 76771.14722300041 For: PS9TRDzp 570 | Indexed Article Num:11911 (~63% uploaded) Response Time (ms): 85124.29564899765 For: wOWyJoFc 571 | Indexed Article Num:11921 (~63% uploaded) Response Time (ms): 82505.23421099968 For: F11deBvl 572 | Indexed Article Num:11933 (~63% uploaded) Response Time (ms): 76840.20370700117 For: iPS7vGvi 573 | Indexed Article Num:11922 (~63% uploaded) Response Time (ms): 81951.10630000103 For: hZ7VOu3R 574 | Indexed Article Num:11945 (~63% uploaded) Response Time (ms): 71151.69306299929 For: gPXlm7E2 575 | Indexed Article Num:11913 (~63% uploaded) Response Time (ms): 86691.50718099903 For: VXJYtNF2 576 | Indexed Article Num:11901 (~63% uploaded) Response Time (ms): 93143.29281399958 For: ZbDB0nV1 577 | Indexed Article Num:11909 (~63% uploaded) Response Time (ms): 89221.79925699905 For: s84IvpF8 578 | Indexed Article Num:11919 (~63% uploaded) Response Time (ms): 86007.53910300229 For: MMt0GnRD 579 | Indexed Article Num:11952 (~63% uploaded) Response Time (ms): 69584.83382899966 For: XiAKcQwI 580 | Indexed Article Num:11902 (~63% uploaded) Response Time (ms): 94736.24033799954 For: AkqTEPE7 581 | Indexed Article Num:11932 (~63% uploaded) Response Time (ms): 80159.86143500078 For: kOyUwWyE 582 | Indexed Article Num:11937 (~63% uploaded) Response Time (ms): 78870.21428900026 For: NV3jox7W 583 | Indexed Article Num:11930 (~63% uploaded) Response Time (ms): 82760.08171900082 For: dmsuR55P 584 | Indexed Article Num:11955 (~63% uploaded) Response Time (ms): 71616.4860469997 For: jOYVNXig 585 | Indexed Article Num:11935 (~63% uploaded) Response Time (ms): 82109.35271399934 For: pxLSEYFt 586 | Indexed Article Num:11941 (~63% uploaded) Response Time (ms): 79587.99449300114 For: fhA5LBf0 587 | Indexed Article Num:11947 (~63% uploaded) Response Time (ms): 77227.74376400188 For: v0kehdPf 588 | Indexed Article Num:11900 (~63% uploaded) Response Time (ms): 101443.63298299816 For: KDCeSglE 589 | Indexed Article Num:11977 (~63% uploaded) Response Time (ms): 61474.44685100019 For: JxZbdYez 590 | Indexed Article Num:11944 (~63% uploaded) Response Time (ms): 79596.21007400099 For: I3txc9EW 591 | Indexed Article Num:11905 (~63% uploaded) Response Time (ms): 99083.19206299912 For: 9Af8ca7G 592 | Indexed Article Num:11931 (~63% uploaded) Response Time (ms): 86232.30668699928 For: znIYBNEo 593 | Indexed Article Num:11959 (~63% uploaded) Response Time (ms): 72808.82158199977 For: PdlfRPtR 594 | Indexed Article Num:11938 (~63% uploaded) Response Time (ms): 84484.4333370002 For: qVzPiDze 595 | Indexed Article Num:11967 (~63% uploaded) Response Time (ms): 68556.03155299928 For: WOXKSTMB 596 | Indexed Article Num:11928 (~63% uploaded) Response Time (ms): 88862.29013699945 For: Y8xU3Qq2 597 | Indexed Article Num:11939 (~63% uploaded) Response Time (ms): 84126.19688700046 For: WlpUW9iZ 598 | Indexed Article Num:11950 (~63% uploaded) Response Time (ms): 78967.07163599879 For: xes9k0rq 599 | Indexed Article Num:11943 (~63% uploaded) Response Time (ms): 82481.97387400083 For: q9OwHDau 600 | Indexed Article Num:11918 (~63% uploaded) Response Time (ms): 96974.59136600047 For: BRSVdQkV 601 | Indexed Article Num:11953 (~63% uploaded) Response Time (ms): 79370.02198799979 For: k5h6rakA 602 | Indexed Article Num:11979 (~63% uploaded) Response Time (ms): 64699.21257799957 For: mxQ7HW9p 603 | Indexed Article Num:11982 (~63% uploaded) Response Time (ms): 63498.813036999665 For: dzQ4DAYr 604 | Indexed Article Num:11956 (~63% uploaded) Response Time (ms): 78975.47652299982 For: ZA7n0kEm 605 | Indexed Article Num:11978 (~63% uploaded) Response Time (ms): 66383.77444699965 For: TDDXDTRR 606 | Indexed Article Num:11965 (~63% uploaded) Response Time (ms): 74115.48257399909 For: cQieot8K 607 | Indexed Article Num:11990 (~63% uploaded) Response Time (ms): 61551.702405000106 For: WGaxDjRa 608 | Indexed Article Num:11954 (~63% uploaded) Response Time (ms): 80682.35793100111 For: 1bb7mvwA 609 | Indexed Article Num:11961 (~63% uploaded) Response Time (ms): 77462.64862200059 For: FO1qOWen 610 | Indexed Article Num:11971 (~63% uploaded) Response Time (ms): 72098.78541499935 For: Um60XdR4 611 | Indexed Article Num:11957 (~63% uploaded) Response Time (ms): 80246.55655299872 For: ZPSdd0K1 612 | Indexed Article Num:11987 (~63% uploaded) Response Time (ms): 64791.86565900128 For: ZBn5TXwo 613 | Indexed Article Num:11985 (~63% uploaded) Response Time (ms): 66270.2762000002 For: nNp9J4dv 614 | Indexed Article Num:11934 (~63% uploaded) Response Time (ms): 94431.5101040015 For: gIrdpBO3 615 | Indexed Article Num:11946 (~63% uploaded) Response Time (ms): 89065.90078100003 For: qCWy5GwI 616 | Indexed Article Num:11981 (~63% uploaded) Response Time (ms): 69629.45494899992 For: JRrZIIL3 617 | Indexed Article Num:11940 (~63% uploaded) Response Time (ms): 94461.42971199937 For: KNxHAFVP 618 | Indexed Article Num:11958 (~63% uploaded) Response Time (ms): 85827.36683499906 For: qEMFuLgE 619 | Indexed Article Num:11962 (~63% uploaded) Response Time (ms): 84440.7205500016 For: Mx2bh0yo 620 | Indexed Article Num:11960 (~63% uploaded) Response Time (ms): 87916.35430100001 For: f73iLvew 621 | Indexed Article Num:11976 (~63% uploaded) Response Time (ms): 79049.1271789996 For: g2ZARGMG 622 | Indexed Article Num:11963 (~63% uploaded) Response Time (ms): 88723.4190750001 For: TxAxhK5u 623 | Indexed Article Num:11968 (~63% uploaded) Response Time (ms): 85920.99807600025 For: JubjAwvY 624 | Indexed Article Num:11948 (~63% uploaded) Response Time (ms): 97906.41829400044 For: Ggz1NZrB 625 | Indexed Article Num:11970 (~63% uploaded) Response Time (ms): 86056.6937730005 For: auB4bOrL 626 | Indexed Article Num:11972 (~63% uploaded) Response Time (ms): 84939.68857700098 For: ytiwZx8K 627 | Indexed Article Num:12009 (~63% uploaded) Response Time (ms): 67419.02379800007 For: O9FtfoO7 628 | Indexed Article Num:11951 (~63% uploaded) Response Time (ms): 100166.5609449977 For: KRtDcJT6 629 | Indexed Article Num:12029 (~63% uploaded) Response Time (ms): 59895.02641100064 For: eh3dYevT 630 | Indexed Article Num:12027 (~63% uploaded) Response Time (ms): 61393.95691099949 For: vWZ50K8c 631 | Indexed Article Num:11964 (~63% uploaded) Response Time (ms): 94372.33280800004 For: SibAvFA8 632 | Indexed Article Num:11986 (~63% uploaded) Response Time (ms): 82970.19588600099 For: ECZyCOlj 633 | Indexed Article Num:11980 (~63% uploaded) Response Time (ms): 86330.70409099944 For: 6BboNcMz 634 | Indexed Article Num:11969 (~63% uploaded) Response Time (ms): 92275.88489100058 For: MoyZaY48 635 | Indexed Article Num:12020 (~63% uploaded) Response Time (ms): 66341.26355500054 For: SxAwsE3u 636 | Indexed Article Num:12018 (~63% uploaded) Response Time (ms): 67893.85526600108 For: zLEQMdF1 637 | Indexed Article Num:12036 (~63% uploaded) Response Time (ms): 59131.48226799909 For: d6jBqTPY 638 | Indexed Article Num:11984 (~63% uploaded) Response Time (ms): 85666.69959499966 For: p7PVYyYW 639 | Indexed Article Num:11989 (~63% uploaded) Response Time (ms): 84328.11607299931 For: L4gKNhcL 640 | Indexed Article Num:12000 (~63% uploaded) Response Time (ms): 78143.79759399872 For: CdXRO9zE 641 | Indexed Article Num:12021 (~63% uploaded) Response Time (ms): 68319.63751400076 For: zW2SVFaZ 642 | Indexed Article Num:11992 (~63% uploaded) Response Time (ms): 83812.85579199996 For: vdYDpvsx 643 | Indexed Article Num:11949 (~63% uploaded) Response Time (ms): 106623.72031699959 For: ztbxXeFh 644 | Indexed Article Num:11999 (~63% uploaded) Response Time (ms): 79978.06369600073 For: ljKdYiy9 645 | Indexed Article Num:11998 (~63% uploaded) Response Time (ms): 81157.63040300086 For: Im9ocJ5D 646 | Indexed Article Num:11966 (~63% uploaded) Response Time (ms): 98108.6490330007 For: wjZcCxiO 647 | Indexed Article Num:12026 (~63% uploaded) Response Time (ms): 67657.96120599937 For: jszqJCCr 648 | Indexed Article Num:11974 (~63% uploaded) Response Time (ms): 93889.38045800105 For: ir0YYnp7 649 | Indexed Article Num:12012 (~63% uploaded) Response Time (ms): 75086.64760899916 For: cRrUgdUs 650 | Indexed Article Num:11993 (~63% uploaded) Response Time (ms): 86478.67889499944 For: dt2wQ2bB 651 | Indexed Article Num:11973 (~63% uploaded) Response Time (ms): 96197.59884500131 For: RnqRa1R2 652 | Indexed Article Num:11983 (~63% uploaded) Response Time (ms): 90733.55850699823 For: ASwyR0jk 653 | Indexed Article Num:11988 (~63% uploaded) Response Time (ms): 89991.04360700026 For: 2MD4AQip 654 | Indexed Article Num:11997 (~63% uploaded) Response Time (ms): 85720.30824400019 For: zw4UdFOY 655 | Indexed Article Num:12004 (~63% uploaded) Response Time (ms): 81746.51955500059 For: M57qitBn 656 | Indexed Article Num:11975 (~63% uploaded) Response Time (ms): 97167.07433599979 For: T7HHaLEV 657 | Indexed Article Num:11991 (~63% uploaded) Response Time (ms): 92034.778957 For: QXL1oQkF 658 | Indexed Article Num:11994 (~63% uploaded) Response Time (ms): 90780.91604899894 For: 85vsIM2C 659 | Indexed Article Num:12010 (~63% uploaded) Response Time (ms): 82641.25343900081 For: CHeAVr0z 660 | Indexed Article Num:12002 (~63% uploaded) Response Time (ms): 87918.49905400071 For: yTuxH2nz 661 | Indexed Article Num:12001 (~63% uploaded) Response Time (ms): 89276.11365299951 For: E1eofkVG 662 | Indexed Article Num:12008 (~63% uploaded) Response Time (ms): 86026.8737949999 For: kqbOPNo2 663 | Indexed Article Num:12019 (~63% uploaded) Response Time (ms): 81199.70100399852 For: LrJdFg6A 664 | Indexed Article Num:11995 (~63% uploaded) Response Time (ms): 93988.1128170006 For: lPGVS0if 665 | Indexed Article Num:12007 (~63% uploaded) Response Time (ms): 88697.84613199905 For: JOpmIseI 666 | Indexed Article Num:12016 (~63% uploaded) Response Time (ms): 85562.65650899895 For: T5iJhuga 667 | Indexed Article Num:12003 (~63% uploaded) Response Time (ms): 94347.19680699985 For: IkeqlxRy 668 | Indexed Article Num:12015 (~63% uploaded) Response Time (ms): 89252.2291330006 For: JfwKd4cq 669 | Indexed Article Num:12028 (~63% uploaded) Response Time (ms): 84387.02173200063 For: 2EoQAklk 670 | Indexed Article Num:12040 (~63% uploaded) Response Time (ms): 79871.39597899932 For: rRjTsCny 671 | Indexed Article Num:11996 (~63% uploaded) Response Time (ms): 102580.86422500107 For: XDY6o0KR 672 | Indexed Article Num:12017 (~63% uploaded) Response Time (ms): 92490.80809400044 For: D6ISds8C 673 | Indexed Article Num:12005 (~63% uploaded) Response Time (ms): 97950.6263840003 For: Jh9hrtbi 674 | Indexed Article Num:12013 (~63% uploaded) Response Time (ms): 95161.4134370014 For: AjoRXAh3 675 | Indexed Article Num:12014 (~63% uploaded) Response Time (ms): 95128.30996299908 For: Xs9ilEZr 676 | Indexed Article Num:12011 (~63% uploaded) Response Time (ms): 99000.56206999812 For: kbgoSgZd 677 | Indexed Article Num:12032 (~63% uploaded) Response Time (ms): 88765.8198339995 For: tzgQ40cv 678 | Indexed Article Num:12023 (~63% uploaded) Response Time (ms): 93705.61183500104 For: q0JmUq20 679 | Indexed Article Num:12006 (~63% uploaded) Response Time (ms): 102334.04934999999 For: 9x7SZf0q 680 | Indexed Article Num:12034 (~63% uploaded) Response Time (ms): 88473.98925999831 For: MgOruxji 681 | Indexed Article Num:12089 (~64% uploaded) Response Time (ms): 60559.64190599974 For: G5ujrjKB 682 | Indexed Article Num:12058 (~63% uploaded) Response Time (ms): 78433.49250300135 For: zzieamVK 683 | Indexed Article Num:12054 (~63% uploaded) Response Time (ms): 80547.73794099968 For: OYSq1XMH 684 | Indexed Article Num:12087 (~64% uploaded) Response Time (ms): 62315.54131300002 For: uaZEluA6 685 | Indexed Article Num:12086 (~64% uploaded) Response Time (ms): 63106.0126020005 For: fuqzxXS1 686 | Indexed Article Num:12071 (~64% uploaded) Response Time (ms): 71057.13201399986 For: 3RPj73Yl 687 | Indexed Article Num:12050 (~63% uploaded) Response Time (ms): 82943.07939199917 For: O0J6DqL0 688 | Indexed Article Num:12035 (~63% uploaded) Response Time (ms): 90051.67328000069 For: Zb8XXTWp 689 | Indexed Article Num:12024 (~63% uploaded) Response Time (ms): 96235.11594099924 For: e7SNPrfG 690 | Indexed Article Num:12030 (~63% uploaded) Response Time (ms): 93017.65908700041 For: f6YHE6HU 691 | Indexed Article Num:12046 (~63% uploaded) Response Time (ms): 85723.95511199906 For: WHUUbwuZ 692 | Indexed Article Num:12048 (~63% uploaded) Response Time (ms): 84655.5124190012 For: nNjlpbKM 693 | Indexed Article Num:12059 (~63% uploaded) Response Time (ms): 79389.45269499999 For: 6wg4NeZL 694 | Indexed Article Num:12079 (~64% uploaded) Response Time (ms): 67847.18322400097 For: uQCClN43 695 | Indexed Article Num:12031 (~63% uploaded) Response Time (ms): 93556.63005199935 For: C82LjqXq 696 | Indexed Article Num:12022 (~63% uploaded) Response Time (ms): 98002.5450710021 For: siuwncKl 697 | Indexed Article Num:12025 (~63% uploaded) Response Time (ms): 99016.42551199906 For: usz2VNyY 698 | Indexed Article Num:12074 (~64% uploaded) Response Time (ms): 73852.95931399986 For: FbrubMHT 699 | Indexed Article Num:12056 (~63% uploaded) Response Time (ms): 84813.81487200037 For: 5BceVgxU 700 | Indexed Article Num:12047 (~63% uploaded) Response Time (ms): 89624.30628000014 For: C03FITiF 701 | Indexed Article Num:12067 (~64% uploaded) Response Time (ms): 78941.97409099992 For: 5Bxjuw8P 702 | Indexed Article Num:12039 (~63% uploaded) Response Time (ms): 93685.81910299975 For: 9QOqnkcX 703 | Indexed Article Num:12088 (~64% uploaded) Response Time (ms): 68235.09427199978 For: uoFYPV31 704 | Indexed Article Num:12055 (~63% uploaded) Response Time (ms): 86983.8248009989 For: AAZpV3Bp 705 | Indexed Article Num:12042 (~63% uploaded) Response Time (ms): 94349.2408060003 For: uZeJOrmU 706 | Indexed Article Num:12085 (~64% uploaded) Response Time (ms): 70922.15471499972 For: Qni8huV6 707 | Indexed Article Num:12049 (~63% uploaded) Response Time (ms): 91009.35577999987 For: wdcdhgRy 708 | Indexed Article Num:12053 (~63% uploaded) Response Time (ms): 88701.57983000111 For: NN00mSdg 709 | Indexed Article Num:12037 (~63% uploaded) Response Time (ms): 96764.53565900028 For: 8GUtSBAi 710 | Indexed Article Num:12044 (~63% uploaded) Response Time (ms): 94824.51587300003 For: 8illcYU0 711 | Indexed Article Num:12033 (~63% uploaded) Response Time (ms): 99539.49761100113 For: rUbYgshV 712 | Indexed Article Num:12062 (~63% uploaded) Response Time (ms): 85996.4407329997 For: UzzIHRQA 713 | Indexed Article Num:12060 (~63% uploaded) Response Time (ms): 87574.67101600114 For: 24d8mr8B 714 | Indexed Article Num:12052 (~63% uploaded) Response Time (ms): 92173.7436050009 For: Sxax8xKX 715 | Indexed Article Num:12064 (~64% uploaded) Response Time (ms): 86687.68272399995 For: K3MJXdV9 716 | Indexed Article Num:12068 (~64% uploaded) Response Time (ms): 84231.80591599923 For: 53SZ4PID 717 | Indexed Article Num:12078 (~64% uploaded) Response Time (ms): 78516.20561600011 For: CcznGxvW 718 | Indexed Article Num:12063 (~63% uploaded) Response Time (ms): 88150.4327700017 For: KdllRuEF 719 | Indexed Article Num:12041 (~63% uploaded) Response Time (ms): 99708.21265499853 For: fXD3zmzp 720 | Indexed Article Num:12070 (~64% uploaded) Response Time (ms): 83936.38950899895 For: dzjetx7k 721 | Indexed Article Num:12043 (~63% uploaded) Response Time (ms): 99970.45915000048 For: FMZNp5op 722 | Indexed Article Num:12076 (~64% uploaded) Response Time (ms): 81476.98406000063 For: ibYeNgJ0 723 | Indexed Article Num:12066 (~64% uploaded) Response Time (ms): 89165.09212200064 For: iFCZjntD 724 | Indexed Article Num:12082 (~64% uploaded) Response Time (ms): 82250.41678099986 For: b5RLsfsj 725 | Indexed Article Num:12073 (~64% uploaded) Response Time (ms): 87071.88631299976 For: pKrsEr7V 726 | Indexed Article Num:12057 (~63% uploaded) Response Time (ms): 97227.87425800133 For: 713Wcl18 727 | Indexed Article Num:12084 (~64% uploaded) Response Time (ms): 81966.83541400079 For: cBjqub8s 728 | Indexed Article Num:12038 (~63% uploaded) Response Time (ms): 106913.11304299999 For: dvGSQU0j 729 | Indexed Article Num:12080 (~64% uploaded) Response Time (ms): 85058.2090559993 For: LVgHWkWE 730 | Indexed Article Num:12108 (~64% uploaded) Response Time (ms): 74880.39555399958 For: 9MMs87MS 731 | Indexed Article Num:12051 (~63% uploaded) Response Time (ms): 104544.03944399953 For: 2dfZg6al 732 | Indexed Article Num:12094 (~64% uploaded) Response Time (ms): 80455.01111599896 For: bdYL3f9a 733 | Indexed Article Num:12113 (~64% uploaded) Response Time (ms): 69163.80025500152 For: EMMjKlo3 734 | Indexed Article Num:12102 (~64% uploaded) Response Time (ms): 76999.47638300061 For: iYaVWaRc 735 | Indexed Article Num:12045 (~63% uploaded) Response Time (ms): 108912.55502900109 For: 8Gxu9BLv 736 | Indexed Article Num:12107 (~64% uploaded) Response Time (ms): 76397.1899239989 For: JwtdLDYK 737 | Indexed Article Num:12061 (~63% uploaded) Response Time (ms): 102260.49634599965 For: JDgfGW5e 738 | Indexed Article Num:12095 (~64% uploaded) Response Time (ms): 82546.96231600083 For: d11CWJbk 739 | Indexed Article Num:12075 (~64% uploaded) Response Time (ms): 94183.15323000029 For: W3AwzjqE 740 | Indexed Article Num:12109 (~64% uploaded) Response Time (ms): 76815.66149200127 For: fJvqxrRD 741 | Indexed Article Num:12104 (~64% uploaded) Response Time (ms): 80000.33452499844 For: vdB02OTQ 742 | Indexed Article Num:12127 (~64% uploaded) Response Time (ms): 65117.3884539986 For: ruM9AI5Q 743 | Indexed Article Num:12065 (~64% uploaded) Response Time (ms): 102143.32641999796 For: tHBpV7Tc 744 | Indexed Article Num:12110 (~64% uploaded) Response Time (ms): 77242.32816300076 For: 5kdcq2Rm 745 | Indexed Article Num:12132 (~64% uploaded) Response Time (ms): 63970.15777899884 For: 8IT98bjS 746 | Indexed Article Num:12096 (~64% uploaded) Response Time (ms): 84501.91031900141 For: Skbd4ccu 747 | Indexed Article Num:12118 (~64% uploaded) Response Time (ms): 71618.5363649996 For: pLennm4b 748 | Indexed Article Num:12099 (~64% uploaded) Response Time (ms): 84102.41968499869 For: SXyiyUu1 749 | Indexed Article Num:12126 (~64% uploaded) Response Time (ms): 68549.64289399981 For: 8l2kEnn1 750 | Indexed Article Num:12124 (~64% uploaded) Response Time (ms): 69578.39882699959 For: UAUgEH3F 751 | Indexed Article Num:12090 (~64% uploaded) Response Time (ms): 90634.51508300006 For: SftGoCFe 752 | Indexed Article Num:12106 (~64% uploaded) Response Time (ms): 84075.81925300136 For: ueU02lqC 753 | Indexed Article Num:12092 (~64% uploaded) Response Time (ms): 90649.70845000073 For: GzItYg4U 754 | Indexed Article Num:12077 (~64% uploaded) Response Time (ms): 98699.06402899977 For: kCYlunSC 755 | Indexed Article Num:12103 (~64% uploaded) Response Time (ms): 85999.4018029999 For: faBv9PJa 756 | Indexed Article Num:12069 (~64% uploaded) Response Time (ms): 104674.06333099958 For: HraN2Jta 757 | Indexed Article Num:12120 (~64% uploaded) Response Time (ms): 75054.4116020007 For: q1zCSZML 758 | Indexed Article Num:12117 (~64% uploaded) Response Time (ms): 77097.04126600083 For: m48n2z47 759 | Indexed Article Num:12098 (~64% uploaded) Response Time (ms): 89414.9889179999 For: YSgx6Rda 760 | Indexed Article Num:12093 (~64% uploaded) Response Time (ms): 92576.15463199932 For: h9u7pFwF 761 | Indexed Article Num:12091 (~64% uploaded) Response Time (ms): 94993.2249739999 For: LxPQl8QO 762 | Indexed Article Num:12083 (~64% uploaded) Response Time (ms): 102252.31714799814 For: jfkNzsm9 763 | Indexed Article Num:12072 (~64% uploaded) Response Time (ms): 108979.71500900015 For: 7oqZjy1L 764 | Indexed Article Num:12100 (~64% uploaded) Response Time (ms): 94673.94284599926 For: wBJQ9mMj 765 | Indexed Article Num:12143 (~64% uploaded) Response Time (ms): 69138.2957650004 For: 8r07qACQ 766 | Indexed Article Num:12081 (~64% uploaded) Response Time (ms): 106190.55547399912 For: yWdR61z5 767 | Indexed Article Num:12111 (~64% uploaded) Response Time (ms): 91361.45882399939 For: 4XtUTaq3 768 | Indexed Article Num:12128 (~64% uploaded) Response Time (ms): 83054.82231000066 For: YXFwm5QH 769 | Indexed Article Num:12150 (~64% uploaded) Response Time (ms): 72074.74101199955 For: 83CDayG8 770 | Indexed Article Num:12135 (~64% uploaded) Response Time (ms): 81654.01732800063 For: Hf8rZb3t 771 | Indexed Article Num:12125 (~64% uploaded) Response Time (ms): 86652.24250799883 For: SMylBNTn 772 | Indexed Article Num:12139 (~64% uploaded) Response Time (ms): 78023.17158800084 For: xBziQ6Mp 773 | Indexed Article Num:12097 (~64% uploaded) Response Time (ms): 103440.96432999894 For: asBk3xsq 774 | Indexed Article Num:12105 (~64% uploaded) Response Time (ms): 100933.13231500145 For: NFjYAKAs 775 | Indexed Article Num:12119 (~64% uploaded) Response Time (ms): 91963.62952899933 For: lDjrvo7t 776 | Indexed Article Num:12145 (~64% uploaded) Response Time (ms): 77349.45546500012 For: P1epPSq5 777 | Indexed Article Num:12101 (~64% uploaded) Response Time (ms): 103380.99513999932 For: vYnDMr52 778 | Indexed Article Num:12115 (~64% uploaded) Response Time (ms): 94456.24155500066 For: lcLOq6Md 779 | Indexed Article Num:12121 (~64% uploaded) Response Time (ms): 91116.1570849996 For: gu77FCvZ 780 | Indexed Article Num:12112 (~64% uploaded) Response Time (ms): 98897.39350599982 For: m0ZsUzAT 781 | Indexed Article Num:12156 (~64% uploaded) Response Time (ms): 74944.66789699998 For: Q3gkA14A 782 | Indexed Article Num:12131 (~64% uploaded) Response Time (ms): 89371.56500500068 For: nZ1d2ELH 783 | Indexed Article Num:12137 (~64% uploaded) Response Time (ms): 85496.50296700001 For: ISkVdJKu 784 | Indexed Article Num:12153 (~64% uploaded) Response Time (ms): 78086.5727789998 For: 2X3Pk0h6 785 | Indexed Article Num:12138 (~64% uploaded) Response Time (ms): 85416.67779800016 For: AcWEur0g 786 | Indexed Article Num:12165 (~64% uploaded) Response Time (ms): 72439.5241519995 For: gMIbjXVH 787 | Indexed Article Num:12116 (~64% uploaded) Response Time (ms): 99268.69317299966 For: HuE4HmJQ 788 | Indexed Article Num:12151 (~64% uploaded) Response Time (ms): 80897.02732899785 For: HpQRvHDa 789 | Indexed Article Num:12154 (~64% uploaded) Response Time (ms): 79139.77250199951 For: mQgTY8x9 790 | Indexed Article Num:12133 (~64% uploaded) Response Time (ms): 91223.8036589995 For: cypccOIX 791 | Indexed Article Num:12148 (~64% uploaded) Response Time (ms): 83061.43187900074 For: Gr324MqQ 792 | Indexed Article Num:12134 (~64% uploaded) Response Time (ms): 91788.05791599862 For: vT47maC8 793 | Indexed Article Num:12114 (~64% uploaded) Response Time (ms): 102054.38540800102 For: Hv5VbzHz 794 | Indexed Article Num:12136 (~64% uploaded) Response Time (ms): 90359.43539700098 For: X3ucoG5f 795 | Indexed Article Num:12140 (~64% uploaded) Response Time (ms): 89945.9025149988 For: R0yWbnQD 796 | Indexed Article Num:12190 (~64% uploaded) Response Time (ms): 63769.163724999875 For: yl5AqPq9 797 | Indexed Article Num:12149 (~64% uploaded) Response Time (ms): 87581.7642060006 For: gOlgp8nl 798 | Indexed Article Num:12159 (~64% uploaded) Response Time (ms): 81977.77054699976 For: TKuSX70x 799 | Indexed Article Num:12184 (~64% uploaded) Response Time (ms): 67279.23080400005 For: Bt2gsMeQ 800 | Indexed Article Num:12157 (~64% uploaded) Response Time (ms): 84608.9781419998 For: YCWWaFbh 801 | Cannot Upload in Batch Count: 12319 802 | { RequestError: Error: getaddrinfo ENOTFOUND v8mbl4erua.execute-api.us-east-1.amazonaws.com v8mbl4erua.execute-api.us-east-1.amazonaws.com:443 803 | at new RequestError (/Users/raviteja_lingineni/Documents/Projects/ServerlessSearch/scale-test/node_modules/request-promise-core/lib/errors.js:14:15) 804 | at Request.plumbing.callback (/Users/raviteja_lingineni/Documents/Projects/ServerlessSearch/scale-test/node_modules/request-promise-core/lib/plumbing.js:87:29) 805 | at Request.RP$callback [as _callback] (/Users/raviteja_lingineni/Documents/Projects/ServerlessSearch/scale-test/node_modules/request-promise-core/lib/plumbing.js:46:31) 806 | at self.callback (/Users/raviteja_lingineni/Documents/Projects/ServerlessSearch/scale-test/node_modules/request/request.js:185:22) 807 | at Request.emit (events.js:159:13) 808 | at Request.onRequestError (/Users/raviteja_lingineni/Documents/Projects/ServerlessSearch/scale-test/node_modules/request/request.js:881:8) 809 | at ClientRequest.emit (events.js:159:13) 810 | at TLSSocket.socketErrorListener (_http_client.js:389:9) 811 | at TLSSocket.emit (events.js:159:13) 812 | at emitErrorNT (internal/streams/destroy.js:64:8) 813 | at process._tickCallback (internal/process/next_tick.js:152:19) 814 | name: 'RequestError', 815 | message: 'Error: getaddrinfo ENOTFOUND v8mbl4erua.execute-api.us-east-1.amazonaws.com v8mbl4erua.execute-api.us-east-1.amazonaws.com:443', 816 | cause: 817 | { Error: getaddrinfo ENOTFOUND v8mbl4erua.execute-api.us-east-1.amazonaws.com v8mbl4erua.execute-api.us-east-1.amazonaws.com:443 818 | at errnoException (dns.js:55:10) 819 | at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:97:26) 820 | code: 'ENOTFOUND', 821 | errno: 'ENOTFOUND', 822 | syscall: 'getaddrinfo', 823 | hostname: 'v8mbl4erua.execute-api.us-east-1.amazonaws.com', 824 | host: 'v8mbl4erua.execute-api.us-east-1.amazonaws.com', 825 | port: 443 }, 826 | error: 827 | { Error: getaddrinfo ENOTFOUND v8mbl4erua.execute-api.us-east-1.amazonaws.com v8mbl4erua.execute-api.us-east-1.amazonaws.com:443 828 | at errnoException (dns.js:55:10) 829 | at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:97:26) 830 | code: 'ENOTFOUND', 831 | errno: 'ENOTFOUND', 832 | syscall: 'getaddrinfo', 833 | hostname: 'v8mbl4erua.execute-api.us-east-1.amazonaws.com', 834 | host: 'v8mbl4erua.execute-api.us-east-1.amazonaws.com', 835 | port: 443 }, 836 | options: 837 | { method: 'POST', 838 | uri: 'https://v8mbl4erua.execute-api.us-east-1.amazonaws.com/Prod/add', 839 | body: [ [Object] ], 840 | json: true, 841 | resolveWithFullResponse: true, 842 | callback: [Function: RP$callback], 843 | transform: undefined, 844 | simple: true, 845 | transform2xxOnly: false }, 846 | response: undefined } 847 | (node:77860) UnhandledPromiseRejectionWarning: RequestError: Error: getaddrinfo ENOTFOUND v8mbl4erua.execute-api.us-east-1.amazonaws.com v8mbl4erua.execute-api.us-east-1.amazonaws.com:443 848 | at new RequestError (/Users/raviteja_lingineni/Documents/Projects/ServerlessSearch/scale-test/node_modules/request-promise-core/lib/errors.js:14:15) 849 | at Request.plumbing.callback (/Users/raviteja_lingineni/Documents/Projects/ServerlessSearch/scale-test/node_modules/request-promise-core/lib/plumbing.js:87:29) 850 | at Request.RP$callback [as _callback] (/Users/raviteja_lingineni/Documents/Projects/ServerlessSearch/scale-test/node_modules/request-promise-core/lib/plumbing.js:46:31) 851 | at self.callback (/Users/raviteja_lingineni/Documents/Projects/ServerlessSearch/scale-test/node_modules/request/request.js:185:22) 852 | at Request.emit (events.js:159:13) 853 | at Request.onRequestError (/Users/raviteja_lingineni/Documents/Projects/ServerlessSearch/scale-test/node_modules/request/request.js:881:8) 854 | at ClientRequest.emit (events.js:159:13) 855 | at TLSSocket.socketErrorListener (_http_client.js:389:9) 856 | at TLSSocket.emit (events.js:159:13) 857 | at emitErrorNT (internal/streams/destroy.js:64:8) 858 | at process._tickCallback (internal/process/next_tick.js:152:19) 859 | (node:77860) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 64) 860 | Indexed Article Num:12152 (~64% uploaded) Response Time (ms): 88394.98695899826 For: mN3tEsku 861 | Indexed Article Num:12142 (~64% uploaded) Response Time (ms): 93058.43922900036 For: FBPnDneD 862 | Indexed Article Num:12146 (~64% uploaded) Response Time (ms): 92348.63254099898 For: 7fxEXqNk 863 | Indexed Article Num:12122 (~64% uploaded) Response Time (ms): 105823.50185600016 For: FRVkaTEL 864 | Indexed Article Num:12141 (~64% uploaded) Response Time (ms): 95492.49135800079 For: KYsIKx4R 865 | Indexed Article Num:12168 (~64% uploaded) Response Time (ms): 80297.97083299886 For: JZ29BHUY 866 | Indexed Article Num:12123 (~64% uploaded) Response Time (ms): 106984.6309150001 For: yPbiaLc3 867 | Indexed Article Num:12129 (~64% uploaded) Response Time (ms): 104755.89193799999 For: cGooKV0D 868 | Indexed Article Num:12147 (~64% uploaded) Response Time (ms): 95862.06909700017 For: FFDO06c1 869 | Indexed Article Num:12163 (~64% uploaded) Response Time (ms): 87069.66873199865 For: HJlLo58X 870 | Indexed Article Num:12130 (~64% uploaded) Response Time (ms): 105734.80381499883 For: w2fbyf2g 871 | Indexed Article Num:12182 (~64% uploaded) Response Time (ms): 75971.61513500102 For: xnhDrrpf 872 | Indexed Article Num:12169 (~64% uploaded) Response Time (ms): 83370.87760999985 For: 0UOnKlhb 873 | Indexed Article Num:12178 (~64% uploaded) Response Time (ms): 78285.10696100071 For: gobdPF8M 874 | Indexed Article Num:12167 (~64% uploaded) Response Time (ms): 87573.90724300034 For: 1B9aj6lq 875 | Indexed Article Num:12233 (~64% uploaded) Response Time (ms): 53600.8813780006 For: kS9awNn9 876 | Indexed Article Num:12158 (~64% uploaded) Response Time (ms): 94265.35030900035 For: ER0f0pwL 877 | Indexed Article Num:12192 (~64% uploaded) Response Time (ms): 75915.28920999914 For: q4kDw7Tp 878 | Indexed Article Num:12160 (~64% uploaded) Response Time (ms): 94632.80266599916 For: thObVDZP 879 | Indexed Article Num:12155 (~64% uploaded) Response Time (ms): 98383.28134100046 For: tCnHTm2q 880 | Indexed Article Num:12162 (~64% uploaded) Response Time (ms): 94256.08882100042 For: 9WRLPPbJ 881 | Indexed Article Num:12161 (~64% uploaded) Response Time (ms): 95248.8356030006 For: gT9tncUP 882 | Indexed Article Num:12208 (~64% uploaded) Response Time (ms): 70025.19766800012 For: tL4yRLRh 883 | Indexed Article Num:12193 (~64% uploaded) Response Time (ms): 78012.4775820002 For: 7mdDqgMg 884 | Indexed Article Num:12144 (~64% uploaded) Response Time (ms): 105747.7333959993 For: b6F0sgV1 885 | Indexed Article Num:12185 (~64% uploaded) Response Time (ms): 82965.4074649997 For: TAIOIA3n 886 | Indexed Article Num:12212 (~64% uploaded) Response Time (ms): 70992.99818000011 For: Zg8Iu7U9 887 | Indexed Article Num:12174 (~64% uploaded) Response Time (ms): 88947.71219300106 For: VJCP3FUd 888 | Indexed Article Num:12195 (~64% uploaded) Response Time (ms): 79521.15104699973 For: VlfFr8s5 889 | Indexed Article Num:12171 (~64% uploaded) Response Time (ms): 92714.81493499875 For: RAkemiay 890 | Indexed Article Num:12196 (~64% uploaded) Response Time (ms): 80855.96373299975 For: uf8cxJHw 891 | Indexed Article Num:12188 (~64% uploaded) Response Time (ms): 84968.54501300026 For: MlE9rPe2 892 | Indexed Article Num:12164 (~64% uploaded) Response Time (ms): 99388.28779999912 For: jLaRwvmy 893 | Indexed Article Num:12210 (~64% uploaded) Response Time (ms): 74884.26002599951 For: BMUeIK5l 894 | Indexed Article Num:12197 (~64% uploaded) Response Time (ms): 80521.14249500167 For: g3NDYmRS 895 | Indexed Article Num:12234 (~64% uploaded) Response Time (ms): 64128.1781390002 For: z4bcSas9 896 | Indexed Article Num:12250 (~64% uploaded) Response Time (ms): 56860.26047800016 For: ySLDVLEW 897 | Indexed Article Num:12179 (~64% uploaded) Response Time (ms): 90618.64392099995 For: 30p1pLuz 898 | Indexed Article Num:12172 (~64% uploaded) Response Time (ms): 94920.78810800146 For: L4X6DQKj 899 | Indexed Article Num:12173 (~64% uploaded) Response Time (ms): 94216.91168199945 For: 7vHFgC4r 900 | Indexed Article Num:12191 (~64% uploaded) Response Time (ms): 85789.27100099996 For: BUGhaoov 901 | Indexed Article Num:12170 (~64% uploaded) Response Time (ms): 96208.7479170002 For: L6iZmnmP 902 | Indexed Article Num:12166 (~64% uploaded) Response Time (ms): 101738.52843000088 For: kHtnZl6q 903 | Indexed Article Num:12183 (~64% uploaded) Response Time (ms): 90715.24519899953 For: muCjsAer 904 | Indexed Article Num:12198 (~64% uploaded) Response Time (ms): 83594.07139399927 For: VRcq8V9p 905 | Indexed Article Num:12201 (~64% uploaded) Response Time (ms): 82813.71850000229 For: KgUupaqQ 906 | Indexed Article Num:12189 (~64% uploaded) Response Time (ms): 88542.66918100137 For: G7m64TfL 907 | Indexed Article Num:12181 (~64% uploaded) Response Time (ms): 92939.83163500018 For: B4cIDMEc 908 | Indexed Article Num:12187 (~64% uploaded) Response Time (ms): 91243.48251999915 For: eLGm0K96 909 | Indexed Article Num:12176 (~64% uploaded) Response Time (ms): 96505.69211099949 For: 8GmyLR8q 910 | Indexed Article Num:12214 (~64% uploaded) Response Time (ms): 78391.57941700146 For: Ael7khtE 911 | Indexed Article Num:12180 (~64% uploaded) Response Time (ms): 94389.02951800078 For: 4fzwjh4v 912 | Indexed Article Num:12177 (~64% uploaded) Response Time (ms): 96922.56192599982 For: q5auMnGD 913 | Indexed Article Num:12175 (~64% uploaded) Response Time (ms): 98474.6324119987 For: j2SJfyds 914 | Indexed Article Num:12215 (~64% uploaded) Response Time (ms): 79485.59660500009 For: 32LXXiqv 915 | Indexed Article Num:12205 (~64% uploaded) Response Time (ms): 85416.59802999906 For: Jjy6AOpM 916 | Indexed Article Num:12218 (~64% uploaded) Response Time (ms): 80475.97782199923 For: FsgwDG6w 917 | Indexed Article Num:12213 (~64% uploaded) Response Time (ms): 83273.34869899973 For: VpmF5zNP 918 | Indexed Article Num:12221 (~64% uploaded) Response Time (ms): 81624.96634900104 For: rOyiuMgI 919 | Indexed Article Num:12229 (~64% uploaded) Response Time (ms): 78205.60377099924 For: KNQKM6kJ 920 | Indexed Article Num:12222 (~64% uploaded) Response Time (ms): 82257.72287200112 For: UqRuJ51K 921 | Indexed Article Num:12216 (~64% uploaded) Response Time (ms): 85589.62039199844 For: 7Oees1CN 922 | Indexed Article Num:12240 (~64% uploaded) Response Time (ms): 74301.03687000088 For: LIxD42id 923 | Indexed Article Num:12235 (~64% uploaded) Response Time (ms): 78400.16439600103 For: HIg98dMH 924 | Indexed Article Num:12224 (~64% uploaded) Response Time (ms): 84062.33663699962 For: qf7VbZXt 925 | Indexed Article Num:12199 (~64% uploaded) Response Time (ms): 95778.62325699907 For: vKZKRJdo 926 | Indexed Article Num:12253 (~65% uploaded) Response Time (ms): 71251.07395500038 For: NTehx1zN 927 | Indexed Article Num:12257 (~65% uploaded) Response Time (ms): 69004.99034200143 For: mvKaaeA3 928 | Indexed Article Num:12194 (~64% uploaded) Response Time (ms): 99336.21740100067 For: 7ZtF4xVQ 929 | Indexed Article Num:12230 (~64% uploaded) Response Time (ms): 81837.52733300067 For: wPzYfkAw 930 | Indexed Article Num:12228 (~64% uploaded) Response Time (ms): 83181.74684999976 For: 4wFZXvJv 931 | Indexed Article Num:12211 (~64% uploaded) Response Time (ms): 91236.94584299996 For: kZQ4WnrH 932 | Indexed Article Num:12223 (~64% uploaded) Response Time (ms): 85382.44894800149 For: jI4h9yRN 933 | Indexed Article Num:12245 (~64% uploaded) Response Time (ms): 75339.2212229995 For: CVftNbpU 934 | Indexed Article Num:12238 (~64% uploaded) Response Time (ms): 78668.61688300036 For: doE5QWVZ 935 | Indexed Article Num:12241 (~64% uploaded) Response Time (ms): 77621.69724799972 For: M1K1ym7i 936 | Indexed Article Num:12231 (~64% uploaded) Response Time (ms): 82054.47119399998 For: UuK4jcHa 937 | Indexed Article Num:12217 (~64% uploaded) Response Time (ms): 89934.39572600089 For: KlZGWpv3 938 | Indexed Article Num:12209 (~64% uploaded) Response Time (ms): 94474.05249799881 For: gZ1Hps0T 939 | Indexed Article Num:12227 (~64% uploaded) Response Time (ms): 87645.19966799859 For: w2vQLfRf 940 | Indexed Article Num:12200 (~64% uploaded) Response Time (ms): 99902.21981700044 For: LHz8Ufyb 941 | Indexed Article Num:12220 (~64% uploaded) Response Time (ms): 91351.96523999982 For: dnJDDT0R 942 | Indexed Article Num:12251 (~64% uploaded) Response Time (ms): 77572.71404300071 For: ujo6bymQ 943 | Indexed Article Num:12226 (~64% uploaded) Response Time (ms): 89096.78709200118 For: FsoM7euk 944 | Indexed Article Num:12202 (~64% uploaded) Response Time (ms): 100179.46331600007 For: QVPYGDzl 945 | Indexed Article Num:12203 (~64% uploaded) Response Time (ms): 100535.53550100047 For: 7L0os5p7 946 | Indexed Article Num:12243 (~64% uploaded) Response Time (ms): 82070.46048900113 For: B5eWBXwZ 947 | Indexed Article Num:12237 (~64% uploaded) Response Time (ms): 85605.02480999939 For: ziDJjD6e 948 | Indexed Article Num:12267 (~65% uploaded) Response Time (ms): 70433.57572199777 For: MjO4Ceis 949 | Indexed Article Num:12206 (~64% uploaded) Response Time (ms): 101838.26155400276 For: BADCwpX7 950 | Indexed Article Num:12219 (~64% uploaded) Response Time (ms): 96618.77652500011 For: rRHNTGKw 951 | Indexed Article Num:12236 (~64% uploaded) Response Time (ms): 89971.8667320013 For: 974RLQIf 952 | Indexed Article Num:12207 (~64% uploaded) Response Time (ms): 103647.79356900137 For: 1Lb7Myxg 953 | Indexed Article Num:12247 (~64% uploaded) Response Time (ms): 85888.82592500094 For: nwTfSwjp 954 | Indexed Article Num:12186 (~64% uploaded) Response Time (ms): 115653.42559299897 For: eEMKo9AC 955 | Indexed Article Num:12204 (~64% uploaded) Response Time (ms): 107833.0912159998 For: iyMDT6aL 956 | Indexed Article Num:12265 (~65% uploaded) Response Time (ms): 77886.91293999832 For: ysC98eIK 957 | Indexed Article Num:12266 (~65% uploaded) Response Time (ms): 77694.79985800013 For: IfYcyhG6 958 | Indexed Article Num:12282 (~65% uploaded) Response Time (ms): 69540.07505600061 For: uXsWXLcc 959 | Indexed Article Num:12269 (~65% uploaded) Response Time (ms): 77457.23195199948 For: 63Fyq0UL 960 | Indexed Article Num:12278 (~65% uploaded) Response Time (ms): 73441.09122900106 For: LhQhrIr9 961 | Indexed Article Num:12249 (~64% uploaded) Response Time (ms): 89959.64334100019 For: uwmwQGZD 962 | Indexed Article Num:12248 (~64% uploaded) Response Time (ms): 91478.01412199996 For: mYMecPMK 963 | Indexed Article Num:12258 (~65% uploaded) Response Time (ms): 88580.79458299931 For: DyG2Z0UV 964 | Indexed Article Num:12244 (~64% uploaded) Response Time (ms): 94945.04468899965 For: N0ENHOOC 965 | Indexed Article Num:12252 (~64% uploaded) Response Time (ms): 92105.1078669997 For: GrKGexoQ 966 | Indexed Article Num:12232 (~64% uploaded) Response Time (ms): 101176.42215600051 For: 28oTLsEw 967 | Indexed Article Num:12254 (~65% uploaded) Response Time (ms): 90969.5389729999 For: RJ9Xx1DW 968 | Indexed Article Num:12268 (~65% uploaded) Response Time (ms): 83291.41731500067 For: HLqfd6c0 969 | Indexed Article Num:12256 (~65% uploaded) Response Time (ms): 91134.54410099983 For: hUBnzdCL 970 | Indexed Article Num:12270 (~65% uploaded) Response Time (ms): 83110.8098450005 For: c2mxjGdT 971 | Indexed Article Num:12283 (~65% uploaded) Response Time (ms): 75992.15887099877 For: qnMTGv4g 972 | Indexed Article Num:12225 (~64% uploaded) Response Time (ms): 106555.10379800014 For: WHCBxYKd 973 | Indexed Article Num:12287 (~65% uploaded) Response Time (ms): 75056.92630099878 For: DoxOfjjm 974 | Indexed Article Num:12262 (~65% uploaded) Response Time (ms): 89391.61267500091 For: 9mZXIg8k 975 | Indexed Article Num:12275 (~65% uploaded) Response Time (ms): 82118.50130500179 For: x33nEs6a 976 | Indexed Article Num:12279 (~65% uploaded) Response Time (ms): 80276.61590500176 For: uEpgLRGW 977 | Indexed Article Num:12242 (~64% uploaded) Response Time (ms): 101030.35571399983 For: 8Dtt3QDH 978 | Indexed Article Num:12259 (~65% uploaded) Response Time (ms): 92848.87055300083 For: MLsgkWTM 979 | Indexed Article Num:12246 (~64% uploaded) Response Time (ms): 99654.80261899997 For: gMYl5Dzr 980 | Indexed Article Num:12311 (~65% uploaded) Response Time (ms): 64445.6807599999 For: HxrzqCfJ 981 | Indexed Article Num:12260 (~65% uploaded) Response Time (ms): 93068.10037900135 For: OAoL0rgX 982 | Indexed Article Num:12261 (~65% uploaded) Response Time (ms): 93287.43428299855 For: AwUGaywg 983 | Indexed Article Num:12272 (~65% uploaded) Response Time (ms): 86637.45777900051 For: 3mFtoZYj 984 | Indexed Article Num:12290 (~65% uploaded) Response Time (ms): 77354.1349549992 For: eatk2Jch 985 | Indexed Article Num:12263 (~65% uploaded) Response Time (ms): 92561.06123100035 For: J6OXUbNt 986 | Indexed Article Num:12239 (~64% uploaded) Response Time (ms): 105157.17625900079 For: vqWxozKS 987 | Indexed Article Num:12255 (~65% uploaded) Response Time (ms): 97741.12971599959 For: nFgsMlU3 988 | Indexed Article Num:12276 (~65% uploaded) Response Time (ms): 86599.31305500027 For: acMXyJ4S 989 | Indexed Article Num:12292 (~65% uploaded) Response Time (ms): 78687.34942100197 For: gl9mmasR 990 | Indexed Article Num:12293 (~65% uploaded) Response Time (ms): 78436.57826400083 For: GEyccbQa 991 | Indexed Article Num:12264 (~65% uploaded) Response Time (ms): 96192.56076499913 For: OE64iXlb 992 | Indexed Article Num:12309 (~65% uploaded) Response Time (ms): 71745.21745200083 For: bLu81RLk 993 | Indexed Article Num:12308 (~65% uploaded) Response Time (ms): 72546.81216300093 For: pEdIHZJG 994 | Indexed Article Num:12304 (~65% uploaded) Response Time (ms): 75340.91430299915 For: aGsiLmRp 995 | Indexed Article Num:12295 (~65% uploaded) Response Time (ms): 81180.03216400184 For: 1NdfICUh 996 | Indexed Article Num:12285 (~65% uploaded) Response Time (ms): 87045.21290299948 For: usrwya1f 997 | Indexed Article Num:12274 (~65% uploaded) Response Time (ms): 93267.90248400066 For: 70k4bQZP 998 | Indexed Article Num:12281 (~65% uploaded) Response Time (ms): 89889.1698100008 For: MNfXMHnl 999 | Indexed Article Num:12277 (~65% uploaded) Response Time (ms): 93801.25398100074 For: 9ktuZfLl 1000 | Indexed Article Num:12291 (~65% uploaded) Response Time (ms): 86637.22097100038 For: yOrZpKZG 1001 | Indexed Article Num:12300 (~65% uploaded) Response Time (ms): 81971.42848999891 For: cRfBADFX 1002 | Indexed Article Num:12315 (~65% uploaded) Response Time (ms): 73561.26295400131 For: doYdYYLI 1003 | Indexed Article Num:12299 (~65% uploaded) Response Time (ms): 83109.25041199848 For: 8LtpBrOq 1004 | Indexed Article Num:12305 (~65% uploaded) Response Time (ms): 79774.20614300016 For: 4134mVec 1005 | Indexed Article Num:12284 (~65% uploaded) Response Time (ms): 91767.42800599895 For: kvfO1Kfe 1006 | Indexed Article Num:12271 (~65% uploaded) Response Time (ms): 98543.02468499914 For: bXc5brcD 1007 | Indexed Article Num:12314 (~65% uploaded) Response Time (ms): 75696.08243000042 For: G9zqC2CT 1008 | Indexed Article Num:12280 (~65% uploaded) Response Time (ms): 94429.44062599819 For: d3DyqYhQ 1009 | Indexed Article Num:12296 (~65% uploaded) Response Time (ms): 85833.48890799936 For: 1rMASuJR 1010 | Indexed Article Num:12297 (~65% uploaded) Response Time (ms): 85955.74303800054 For: 0EGO09IC 1011 | Indexed Article Num:12301 (~65% uploaded) Response Time (ms): 84707.22169599961 For: hwF1FVfk 1012 | Indexed Article Num:12286 (~65% uploaded) Response Time (ms): 93294.66577600036 For: N02RAza5 1013 | Indexed Article Num:12288 (~65% uploaded) Response Time (ms): 93447.76868799888 For: qBWSBWOo 1014 | Indexed Article Num:12312 (~65% uploaded) Response Time (ms): 82434.01698499825 For: RN6AFx7y 1015 | Indexed Article Num:12294 (~65% uploaded) Response Time (ms): 93494.85539000016 For: hmHKP7q6 1016 | Indexed Article Num:12273 (~65% uploaded) Response Time (ms): 105559.997134001 For: Nwylrfeu 1017 | Indexed Article Num:12307 (~65% uploaded) Response Time (ms): 86962.16792800091 For: OUuZHoZ6 1018 | Indexed Article Num:12289 (~65% uploaded) Response Time (ms): 99399.44253899995 For: YdC1Vlph 1019 | Indexed Article Num:12302 (~65% uploaded) Response Time (ms): 91961.48129400145 For: WqTDoKs1 1020 | Indexed Article Num:12313 (~65% uploaded) Response Time (ms): 86422.06885900069 For: 1rsM9xGI 1021 | Indexed Article Num:12306 (~65% uploaded) Response Time (ms): 91029.23353599943 For: 13qjspQm 1022 | Indexed Article Num:12303 (~65% uploaded) Response Time (ms): 93684.93286500033 For: aGuEwbeG 1023 | Indexed Article Num:12298 (~65% uploaded) Response Time (ms): 96344.03104900103 For: CIbZqhRR 1024 | Indexed Article Num:12310 (~65% uploaded) Response Time (ms): 96857.2104099989 For: eVVqQ8Vj 1025 | Indexed Article Num:12318 (~65% uploaded) Response Time (ms): 92742.02236699965 For: KWB1m1dV 1026 | Indexed Article Num:12316 (~65% uploaded) Response Time (ms): 94029.09906500019 For: ixb0Udyo 1027 | Indexed Article Num:12317 (~65% uploaded) Response Time (ms): 100060.64075400028 For: eoO1kXcs -------------------------------------------------------------------------------- /scale-test/movies-results/readme.md: -------------------------------------------------------------------------------- 1 | Performance test for indexing latency. 2 | 3 | Adding a document to an index, and how long it takes to recall that index. 4 | 5 | Index multiplier is a way to speed things up by batching documents instead of singular objects one at a time. 6 | -------------------------------------------------------------------------------- /scale-test/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "scale-test", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "ajv": { 8 | "version": "5.5.2", 9 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", 10 | "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", 11 | "requires": { 12 | "co": "4.6.0", 13 | "fast-deep-equal": "1.1.0", 14 | "fast-json-stable-stringify": "2.0.0", 15 | "json-schema-traverse": "0.3.1" 16 | } 17 | }, 18 | "alphanumeric-id": { 19 | "version": "1.0.1", 20 | "resolved": "https://registry.npmjs.org/alphanumeric-id/-/alphanumeric-id-1.0.1.tgz", 21 | "integrity": "sha1-pOfnTtCoULBIKNk6gq4ORaun4RU=" 22 | }, 23 | "argparse": { 24 | "version": "1.0.10", 25 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 26 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 27 | "requires": { 28 | "sprintf-js": "1.0.3" 29 | } 30 | }, 31 | "asn1": { 32 | "version": "0.2.4", 33 | "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", 34 | "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", 35 | "requires": { 36 | "safer-buffer": "2.1.2" 37 | } 38 | }, 39 | "assert-plus": { 40 | "version": "1.0.0", 41 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 42 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" 43 | }, 44 | "async": { 45 | "version": "2.6.1", 46 | "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", 47 | "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", 48 | "requires": { 49 | "lodash": "4.17.11" 50 | } 51 | }, 52 | "asynckit": { 53 | "version": "0.4.0", 54 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 55 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" 56 | }, 57 | "aws-sign2": { 58 | "version": "0.7.0", 59 | "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", 60 | "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" 61 | }, 62 | "aws4": { 63 | "version": "1.8.0", 64 | "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", 65 | "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" 66 | }, 67 | "bcrypt-pbkdf": { 68 | "version": "1.0.2", 69 | "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", 70 | "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", 71 | "optional": true, 72 | "requires": { 73 | "tweetnacl": "0.14.5" 74 | } 75 | }, 76 | "bluebird": { 77 | "version": "3.5.2", 78 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.2.tgz", 79 | "integrity": "sha512-dhHTWMI7kMx5whMQntl7Vr9C6BvV10lFXDAasnqnrMYhXVCzzk6IO9Fo2L75jXHT07WrOngL1WDXOp+yYS91Yg==" 80 | }, 81 | "caseless": { 82 | "version": "0.12.0", 83 | "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", 84 | "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" 85 | }, 86 | "co": { 87 | "version": "4.6.0", 88 | "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", 89 | "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" 90 | }, 91 | "colors": { 92 | "version": "1.0.3", 93 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", 94 | "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=" 95 | }, 96 | "combined-stream": { 97 | "version": "1.0.7", 98 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", 99 | "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", 100 | "requires": { 101 | "delayed-stream": "1.0.0" 102 | } 103 | }, 104 | "core-util-is": { 105 | "version": "1.0.2", 106 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 107 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 108 | }, 109 | "coveralls": { 110 | "version": "3.0.2", 111 | "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.0.2.tgz", 112 | "integrity": "sha512-Tv0LKe/MkBOilH2v7WBiTBdudg2ChfGbdXafc/s330djpF3zKOmuehTeRwjXWc7pzfj9FrDUTA7tEx6Div8NFw==", 113 | "requires": { 114 | "growl": "1.10.5", 115 | "js-yaml": "3.12.0", 116 | "lcov-parse": "0.0.10", 117 | "log-driver": "1.2.7", 118 | "minimist": "1.2.0", 119 | "request": "2.88.0" 120 | } 121 | }, 122 | "cycle": { 123 | "version": "1.0.3", 124 | "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", 125 | "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=" 126 | }, 127 | "dashdash": { 128 | "version": "1.14.1", 129 | "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", 130 | "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", 131 | "requires": { 132 | "assert-plus": "1.0.0" 133 | } 134 | }, 135 | "delayed-stream": { 136 | "version": "1.0.0", 137 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 138 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" 139 | }, 140 | "ecc-jsbn": { 141 | "version": "0.1.2", 142 | "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", 143 | "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", 144 | "optional": true, 145 | "requires": { 146 | "jsbn": "0.1.1", 147 | "safer-buffer": "2.1.2" 148 | } 149 | }, 150 | "esprima": { 151 | "version": "4.0.1", 152 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 153 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" 154 | }, 155 | "extend": { 156 | "version": "3.0.2", 157 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", 158 | "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" 159 | }, 160 | "extsprintf": { 161 | "version": "1.3.0", 162 | "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", 163 | "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" 164 | }, 165 | "eyes": { 166 | "version": "0.1.8", 167 | "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", 168 | "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=" 169 | }, 170 | "fast-deep-equal": { 171 | "version": "1.1.0", 172 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", 173 | "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" 174 | }, 175 | "fast-json-stable-stringify": { 176 | "version": "2.0.0", 177 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", 178 | "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" 179 | }, 180 | "forever-agent": { 181 | "version": "0.6.1", 182 | "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", 183 | "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" 184 | }, 185 | "form-data": { 186 | "version": "2.3.2", 187 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", 188 | "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", 189 | "requires": { 190 | "asynckit": "0.4.0", 191 | "combined-stream": "1.0.6", 192 | "mime-types": "2.1.20" 193 | }, 194 | "dependencies": { 195 | "combined-stream": { 196 | "version": "1.0.6", 197 | "resolved": "http://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", 198 | "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", 199 | "requires": { 200 | "delayed-stream": "1.0.0" 201 | } 202 | } 203 | } 204 | }, 205 | "getpass": { 206 | "version": "0.1.7", 207 | "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", 208 | "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", 209 | "requires": { 210 | "assert-plus": "1.0.0" 211 | } 212 | }, 213 | "growl": { 214 | "version": "1.10.5", 215 | "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", 216 | "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==" 217 | }, 218 | "har-schema": { 219 | "version": "2.0.0", 220 | "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", 221 | "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" 222 | }, 223 | "har-validator": { 224 | "version": "5.1.0", 225 | "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz", 226 | "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==", 227 | "requires": { 228 | "ajv": "5.5.2", 229 | "har-schema": "2.0.0" 230 | } 231 | }, 232 | "http-signature": { 233 | "version": "1.2.0", 234 | "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", 235 | "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", 236 | "requires": { 237 | "assert-plus": "1.0.0", 238 | "jsprim": "1.4.1", 239 | "sshpk": "1.14.2" 240 | } 241 | }, 242 | "is-typedarray": { 243 | "version": "1.0.0", 244 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 245 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" 246 | }, 247 | "isstream": { 248 | "version": "0.1.2", 249 | "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", 250 | "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" 251 | }, 252 | "js-yaml": { 253 | "version": "3.12.0", 254 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", 255 | "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", 256 | "requires": { 257 | "argparse": "1.0.10", 258 | "esprima": "4.0.1" 259 | } 260 | }, 261 | "jsbn": { 262 | "version": "0.1.1", 263 | "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", 264 | "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", 265 | "optional": true 266 | }, 267 | "json-schema": { 268 | "version": "0.2.3", 269 | "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", 270 | "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" 271 | }, 272 | "json-schema-traverse": { 273 | "version": "0.3.1", 274 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", 275 | "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" 276 | }, 277 | "json-stringify-safe": { 278 | "version": "5.0.1", 279 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", 280 | "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" 281 | }, 282 | "jsprim": { 283 | "version": "1.4.1", 284 | "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", 285 | "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", 286 | "requires": { 287 | "assert-plus": "1.0.0", 288 | "extsprintf": "1.3.0", 289 | "json-schema": "0.2.3", 290 | "verror": "1.10.0" 291 | } 292 | }, 293 | "lcov-parse": { 294 | "version": "0.0.10", 295 | "resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-0.0.10.tgz", 296 | "integrity": "sha1-GwuP+ayceIklBYK3C3ExXZ2m2aM=" 297 | }, 298 | "lodash": { 299 | "version": "4.17.11", 300 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", 301 | "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" 302 | }, 303 | "log-driver": { 304 | "version": "1.2.7", 305 | "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", 306 | "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==" 307 | }, 308 | "mime-db": { 309 | "version": "1.36.0", 310 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz", 311 | "integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw==" 312 | }, 313 | "mime-types": { 314 | "version": "2.1.20", 315 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz", 316 | "integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==", 317 | "requires": { 318 | "mime-db": "1.36.0" 319 | } 320 | }, 321 | "minimist": { 322 | "version": "1.2.0", 323 | "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", 324 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" 325 | }, 326 | "oauth-sign": { 327 | "version": "0.9.0", 328 | "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", 329 | "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" 330 | }, 331 | "performance-now": { 332 | "version": "2.1.0", 333 | "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", 334 | "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" 335 | }, 336 | "promise-request-retry": { 337 | "version": "1.0.1", 338 | "resolved": "https://registry.npmjs.org/promise-request-retry/-/promise-request-retry-1.0.1.tgz", 339 | "integrity": "sha1-noZNLJ2fQt9gk/p+E7j5MSYoyAo=", 340 | "requires": { 341 | "async": "2.6.1", 342 | "bluebird": "3.5.2", 343 | "coveralls": "3.0.2", 344 | "req-cwd": "2.0.0", 345 | "request": "2.88.0", 346 | "request-promise": "4.2.2", 347 | "winston": "2.4.4" 348 | } 349 | }, 350 | "psl": { 351 | "version": "1.1.29", 352 | "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", 353 | "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==" 354 | }, 355 | "punycode": { 356 | "version": "1.4.1", 357 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", 358 | "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" 359 | }, 360 | "qs": { 361 | "version": "6.5.2", 362 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", 363 | "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" 364 | }, 365 | "req-cwd": { 366 | "version": "2.0.0", 367 | "resolved": "https://registry.npmjs.org/req-cwd/-/req-cwd-2.0.0.tgz", 368 | "integrity": "sha1-1AgrTURZgDZkD7c93qAe1T20nrw=", 369 | "requires": { 370 | "req-from": "2.0.0" 371 | } 372 | }, 373 | "req-from": { 374 | "version": "2.0.0", 375 | "resolved": "https://registry.npmjs.org/req-from/-/req-from-2.0.0.tgz", 376 | "integrity": "sha1-10GI5H+TeW9Kpx327jWuaJ8+DnA=", 377 | "requires": { 378 | "resolve-from": "3.0.0" 379 | } 380 | }, 381 | "request": { 382 | "version": "2.88.0", 383 | "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", 384 | "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", 385 | "requires": { 386 | "aws-sign2": "0.7.0", 387 | "aws4": "1.8.0", 388 | "caseless": "0.12.0", 389 | "combined-stream": "1.0.7", 390 | "extend": "3.0.2", 391 | "forever-agent": "0.6.1", 392 | "form-data": "2.3.2", 393 | "har-validator": "5.1.0", 394 | "http-signature": "1.2.0", 395 | "is-typedarray": "1.0.0", 396 | "isstream": "0.1.2", 397 | "json-stringify-safe": "5.0.1", 398 | "mime-types": "2.1.20", 399 | "oauth-sign": "0.9.0", 400 | "performance-now": "2.1.0", 401 | "qs": "6.5.2", 402 | "safe-buffer": "5.1.2", 403 | "tough-cookie": "2.4.3", 404 | "tunnel-agent": "0.6.0", 405 | "uuid": "3.3.2" 406 | } 407 | }, 408 | "request-promise": { 409 | "version": "4.2.2", 410 | "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.2.tgz", 411 | "integrity": "sha1-0epG1lSm7k+O5qT+oQGMIpEZBLQ=", 412 | "requires": { 413 | "bluebird": "3.5.2", 414 | "request-promise-core": "1.1.1", 415 | "stealthy-require": "1.1.1", 416 | "tough-cookie": "2.4.3" 417 | } 418 | }, 419 | "request-promise-core": { 420 | "version": "1.1.1", 421 | "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", 422 | "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", 423 | "requires": { 424 | "lodash": "4.17.11" 425 | } 426 | }, 427 | "resolve-from": { 428 | "version": "3.0.0", 429 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", 430 | "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" 431 | }, 432 | "safe-buffer": { 433 | "version": "5.1.2", 434 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 435 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 436 | }, 437 | "safer-buffer": { 438 | "version": "2.1.2", 439 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 440 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 441 | }, 442 | "sprintf-js": { 443 | "version": "1.0.3", 444 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 445 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" 446 | }, 447 | "sshpk": { 448 | "version": "1.14.2", 449 | "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", 450 | "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", 451 | "requires": { 452 | "asn1": "0.2.4", 453 | "assert-plus": "1.0.0", 454 | "bcrypt-pbkdf": "1.0.2", 455 | "dashdash": "1.14.1", 456 | "ecc-jsbn": "0.1.2", 457 | "getpass": "0.1.7", 458 | "jsbn": "0.1.1", 459 | "safer-buffer": "2.1.2", 460 | "tweetnacl": "0.14.5" 461 | } 462 | }, 463 | "stack-trace": { 464 | "version": "0.0.10", 465 | "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", 466 | "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" 467 | }, 468 | "stealthy-require": { 469 | "version": "1.1.1", 470 | "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", 471 | "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" 472 | }, 473 | "tough-cookie": { 474 | "version": "2.4.3", 475 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", 476 | "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", 477 | "requires": { 478 | "psl": "1.1.29", 479 | "punycode": "1.4.1" 480 | } 481 | }, 482 | "tunnel-agent": { 483 | "version": "0.6.0", 484 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", 485 | "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", 486 | "requires": { 487 | "safe-buffer": "5.1.2" 488 | } 489 | }, 490 | "tweetnacl": { 491 | "version": "0.14.5", 492 | "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", 493 | "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", 494 | "optional": true 495 | }, 496 | "uuid": { 497 | "version": "3.3.2", 498 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", 499 | "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" 500 | }, 501 | "verror": { 502 | "version": "1.10.0", 503 | "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", 504 | "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", 505 | "requires": { 506 | "assert-plus": "1.0.0", 507 | "core-util-is": "1.0.2", 508 | "extsprintf": "1.3.0" 509 | } 510 | }, 511 | "winston": { 512 | "version": "2.4.4", 513 | "resolved": "https://registry.npmjs.org/winston/-/winston-2.4.4.tgz", 514 | "integrity": "sha512-NBo2Pepn4hK4V01UfcWcDlmiVTs7VTB1h7bgnB0rgP146bYhMxX0ypCz3lBOfNxCO4Zuek7yeT+y/zM1OfMw4Q==", 515 | "requires": { 516 | "async": "1.0.0", 517 | "colors": "1.0.3", 518 | "cycle": "1.0.3", 519 | "eyes": "0.1.8", 520 | "isstream": "0.1.2", 521 | "stack-trace": "0.0.10" 522 | }, 523 | "dependencies": { 524 | "async": { 525 | "version": "1.0.0", 526 | "resolved": "http://registry.npmjs.org/async/-/async-1.0.0.tgz", 527 | "integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=" 528 | } 529 | } 530 | } 531 | } 532 | } 533 | -------------------------------------------------------------------------------- /scale-test/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "scale-test", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "main.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "dependencies": { 12 | "alphanumeric-id": "^1.0.1", 13 | "promise-request-retry": "^1.0.1", 14 | "request": "^2.88.0", 15 | "request-promise": "^4.2.2" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /scale-test/scale-data.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rlingineni/Lambda-Serverless-Search/31610ccebfb4c21d2248db2128b3d1fc9bc638c7/scale-test/scale-data.xlsx -------------------------------------------------------------------------------- /template.yaml: -------------------------------------------------------------------------------- 1 | AWSTemplateFormatVersion: "2010-09-09" 2 | Transform: AWS::Serverless-2016-10-31 3 | Description: > 4 | Free text search API and indexer for a collection of articles 5 | Parameters: 6 | TargetBucket: 7 | Description: Name of S3 bucket to create where search articles should be uploaded (remember s3 bucket names are only lowercase) 8 | Type: String 9 | InternalAPIKey: 10 | Type: String 11 | Default: supersecretkey 12 | Description: Internal API Key that you will use when making requests to update the search index configuration 13 | # More info about Globals: https://github.com/awslabs/serverless-application-model/blob/master/docs/globals.rst 14 | Globals: 15 | Function: 16 | Timeout: 60 17 | MemorySize: 1024 18 | 19 | Resources: 20 | DocumentSearchFunction: 21 | Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction 22 | Properties: 23 | CodeUri: document_search 24 | Handler: app.lambdaHandler 25 | Runtime: nodejs8.10 26 | Environment: # More info about Env Vars: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#environment-object 27 | Variables: 28 | BUCKET_NAME: !Ref TargetBucket 29 | INTERNAL_API_KEY: !Ref InternalAPIKey 30 | Policies: 31 | - S3CrudPolicy: 32 | BucketName: !Ref TargetBucket 33 | Events: 34 | DocumentSearch: 35 | Type: Api # More info about API Event Source: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api 36 | Properties: 37 | Path: /search 38 | Method: GET 39 | DocumentUpload: 40 | Type: Api # More info about API Event Source: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api 41 | Properties: 42 | Path: /add 43 | Method: ANY 44 | SearchConfiguration: 45 | Type: Api # More info about API Event Source: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api 46 | Properties: 47 | Path: /internal/config 48 | Method: ANY 49 | DocumentIndexingFunction: 50 | Type: AWS::Serverless::Function 51 | Properties: 52 | CodeUri: document_indexer 53 | Handler: app.lambdaHandler 54 | Runtime: nodejs8.10 55 | Environment: # More info about Env Vars: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#environment-object 56 | Variables: 57 | BUCKET_NAME: !Ref TargetBucket 58 | Policies: 59 | - S3CrudPolicy: 60 | BucketName: !Ref TargetBucket 61 | Events: 62 | DocumentAddedEvent: 63 | Type: S3 64 | Properties: 65 | Bucket: !Ref SearchDocumentsBucket 66 | Events: s3:ObjectCreated:* 67 | DocumentBatchingFunction: 68 | Type: AWS::Serverless::Function 69 | Properties: 70 | CodeUri: document_batch 71 | Handler: app.lambdaHandler 72 | Runtime: nodejs14.x 73 | Environment: # More info about Env Vars: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#environment-object 74 | Variables: 75 | BUCKET_NAME: !Ref TargetBucket 76 | Policies: 77 | - S3CrudPolicy: 78 | BucketName: !Ref TargetBucket 79 | Events: 80 | DocumentBatchEvent: 81 | Type: Schedule 82 | Properties: 83 | Schedule: rate(5 minutes) 84 | SearchDocumentsBucket: 85 | Type: "AWS::S3::Bucket" 86 | Properties: 87 | BucketName: !Ref TargetBucket 88 | 89 | Outputs: 90 | DocumentSearchApi: 91 | Description: "Deployed API Gateway Endpoint URL" 92 | Value: !Sub "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod" 93 | 94 | DocumentSearchFunction: 95 | Description: "Search Document API Function ARN" 96 | Value: !GetAtt DocumentSearchFunction.Arn 97 | 98 | DocumentIndexingFunction: 99 | Description: "Search Document Indexing Function ARN" 100 | Value: !GetAtt DocumentIndexingFunction.Arn 101 | 102 | DocumentBatchingFunction: 103 | Description: "Search Document Batching Function ARN" 104 | Value: !GetAtt DocumentBatchingFunction.Arn 105 | 106 | DocumentCollectionBucket: 107 | Description: "S3 Bucket for all uploaded documents and indexing information" 108 | Value: !Ref TargetBucket 109 | --------------------------------------------------------------------------------