{"_id":"happn-db-provider-elasticsearch","_rev":"37-979a3371b737bf0ebd7d14dc41d02f53","name":"happn-db-provider-elasticsearch","dist-tags":{"latest":"1.0.16","prerelease-1":"1.0.14-prerelease-3"},"versions":{"1.0.0":{"name":"happn-db-provider-elasticsearch","version":"1.0.0","private":false,"scripts":{"test":"_mocha --recursive --exit silence.js test/*","test-cover":"nyc --reporter=lcov --reporter=text --reporter=html npm test","test-unit":"mocha silence.js test/unit/* --recursive"},"dependencies":{"happn-commons":"^1.0.0","agentkeepalive":"^3.3.0","bluebird":"2.10.2","elasticsearch":"^13.2.0","extract-values":"^0.1.2","happn-logger":"^2.0.0","micromustache":"^5.2.0","redis-lru-cache":"^1.0.0","traverse":"0.6.6"},"devDependencies":{"happn-commons-test":"^1.0.0","happn-3":"^13.0.0","json-from-schema":"1.10.0"},"gitHead":"eeda8f6df5c9904d21b507e259adcca40154ad54","description":"happner elastic dataprovider ---------------------------- *This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*","_id":"happn-db-provider-elasticsearch@1.0.0","_nodeVersion":"16.13.1","_npmVersion":"8.1.2","dist":{"integrity":"sha512-Y50D+dfJvjHnYKaIyUcJpOlVuHnG3KAmYPiKQZU7YzsU6R5S0a0a3ZV3C+BPOImwAlci7hR/6oJgX+oA7CNtFw==","shasum":"3cbd63ab594b87edcd2c4a9a4dfc82f0be0e68be","tarball":"https://registry.npmjs.org/happn-db-provider-elasticsearch/-/happn-db-provider-elasticsearch-1.0.0.tgz","fileCount":45,"unpackedSize":608105,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiHn1TACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo1MQ//TtGWWTZu5kDlEe7CPW4V66NZlCQdImAIp8JkWpb9clCoXhEG\r\nkLJbGdFEE0i1g2G8imWue+H6KnLkOtjo60CEMwEaZlwxX+hex1oMaMZj7KmT\r\nyZfsRAVmwO5Wl3jzU7Nz53lUwjod++bsU2c5gpKB5uScLkL8cJWuq53RdjCO\r\n+sNtSR2e4BS46ieq98RImYqGQALjY/PAoXa0vWFczoaZ3qvn1vh9Phg5kTon\r\nfkU3Us/sZFmfV+cMoQZ0RjjbwGJXGZRCbw9mLsguY1t7AxLcJKOWXBOTDtCI\r\n/7yfEM8WvGY1fwsKmu2YzgqghbyzLR6l6I0z2gknlCc9VmAx/RVOv5KfLskg\r\nDEWnH8z3LFPBHY0pKcBQNIik0g3+yQde8J372Mr7N+2SgPUE8v80HBYPqXAy\r\nRT1gtD4sE8cxA/FEN4qJMK7XLy9MBBhKtvpp/YdRpxnucXGPR4kibVU3ILND\r\nb+EBZZ8iN66o+q9GZu+Jl4Pi69/CtuSi9H9c1tqf0gGb9i9lWs256P7Fgwyg\r\nLiTps/6N74+g4uW8kETK+w7giSwPSQNxsimzpAqfQD3fyrES3drHl6EYL+0z\r\nOMWGIiK6UCwofyOdsKOo4adqzeB9NXKOwcee5Xqc6FbI/JQlQPuCcYZZm2Ul\r\nohfABIiFd+hTObFpYRPn/zNbINeQP9ydlRE=\r\n=OoVZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC9nUg1zyS6e2ua/b/EPgpqwGion02pwAIFolUBWd6yGwIgYMgsTYccCHvEAVeRWR18Q2rmaNK+HgCumnJs5l3WzDw="}]},"_npmUser":{"name":"smc-tenacious","email":"eggers.jens@gmail.com"},"directories":{},"maintainers":[{"name":"smc-tenacious","email":"eggers.jens@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/happn-db-provider-elasticsearch_1.0.0_1646165331828_0.13657699437723525"},"_hasShrinkwrap":false},"1.0.1":{"name":"happn-db-provider-elasticsearch","version":"1.0.1","private":false,"scripts":{"test":"_mocha --recursive --exit silence.js test/*","test-cover":"nyc --reporter=lcov --reporter=text --reporter=html npm test","test-unit":"mocha silence.js test/unit/* --recursive"},"dependencies":{"happn-commons":"^1.0.0","agentkeepalive":"^3.3.0","bluebird":"2.10.2","elasticsearch":"^13.2.0","extract-values":"^0.1.2","happn-logger":"^2.0.0","micromustache":"^5.2.0","redis-lru-cache":"^1.0.0","traverse":"0.6.6"},"devDependencies":{"happn-commons-test":"^1.0.0","happn-3":"^13.0.0","json-from-schema":"1.10.0"},"gitHead":"5c630df63ffd761e64c5fd005b044d84808d916c","description":"happner elastic dataprovider ---------------------------- *This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*","_id":"happn-db-provider-elasticsearch@1.0.1","_nodeVersion":"16.13.1","_npmVersion":"8.1.2","dist":{"integrity":"sha512-ODpSEqh945i+h5/idtXwIJtUesWb6dvTTu5q5k9JRyIAOMrUJe7R7yx6JrVW73E2YqPYgQp8k9okEdpNeGDKMg==","shasum":"6614c07f4db9e390fead490bc70978937c2e61ac","tarball":"https://registry.npmjs.org/happn-db-provider-elasticsearch/-/happn-db-provider-elasticsearch-1.0.1.tgz","fileCount":9,"unpackedSize":42850,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiILtMACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqpZw/9EyFr5HrW6XYW4GniOJFY+o1nAfmk9BsRLwjmOM/wrCrZkDZD\r\naXj6PTtp+EouMu0oh/fT29n+roVSn/vcK4bvkniLFZlS+INg0lpwDT+Ifljp\r\n4KVembL/C0l82BXLAeq3GEoxFOD+IW4gkKh092b7X8/cs5oeut687vgqOWga\r\nj0xFyPeCQUrTWgmoB21KE+GvfTRrNwtNuPv/7Jp7J0ViKmSZF+VpzhhyDHeU\r\noD5fG+i9Ev+Iwle8cEgnmva/03NaLSxzLoX7m1vec5PkOTr0u5wMI6/sdVSg\r\nGxqxvmoZh0u4yl2NR2VFdqj3nhRUmdK5ommmhS/PpbFHvfApwiU/AxoO02vV\r\nEwIVqlt9kBqORXeblzg2tSb9o/dLrUintlcHeh0o8btk7hRS2zXZbPJ2nHbs\r\nxpWvkVEEM3wMoCijSnSr4sWP74iCQWFAbfeVD+y6q0/jCW5v5YWIP0qkT0hk\r\n/Lc7eg1AFe91bbRcJIKlapOaxQ1uHyEcvDMVjQVTyriXCzEVK7JDSljFmigl\r\nRnnGnaznFiNN65V5DmFa+DZ/jE0lmafkcz+hXXrSZEgLIx11Wk0qqlLuxv7e\r\nEVf2ww0pX+6yNvUz4ST7hsu8vHZMB53MPjXa3AEjbm/ZD+fNL6tV8c7saDPq\r\nFP2g//oof0ZfikkttT8XQwWoETrd34z4El4=\r\n=ih5c\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICLCld6gkRJnBPOmog+VksNziim0ZPe8VPLGg6mNtrGkAiEA1xiGVT6Un12Cs/ww3R1qio2ib6QgOk4c3IwQpmzxVhY="}]},"_npmUser":{"name":"smc-tenacious","email":"eggers.jens@gmail.com"},"directories":{},"maintainers":[{"name":"smc-tenacious","email":"eggers.jens@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/happn-db-provider-elasticsearch_1.0.1_1646312268767_0.41450730706184724"},"_hasShrinkwrap":false},"1.0.2":{"name":"happn-db-provider-elasticsearch","version":"1.0.2","private":false,"scripts":{"test":"_mocha --recursive --exit silence.js test/*","test-cover":"nyc --reporter=lcov --reporter=text --reporter=html npm test","test-unit":"mocha silence.js test/unit/* --recursive"},"dependencies":{"happn-commons":"^1.0.1","agentkeepalive":"^3.3.0","bluebird":"2.10.2","elasticsearch":"^13.2.0","extract-values":"^0.1.2","happn-logger":"^2.0.2","micromustache":"^5.2.0","redis-lru-cache":"^1.0.2","traverse":"0.6.6"},"devDependencies":{"happn-commons-test":"^1.0.2","happn-3":"^13.0.4","json-from-schema":"1.10.0"},"gitHead":"c207a480014df818acf5bdd44f931f1382fca8f3","description":"happner elastic dataprovider ---------------------------- *This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*","_id":"happn-db-provider-elasticsearch@1.0.2","_nodeVersion":"17.1.0","_npmVersion":"8.1.4","dist":{"integrity":"sha512-n/cVChpkc+kPOHSfaAje/abNV239zJ3HzcRYCZUWvhtiVNBu6EezStlzx6K/VNSffYxis52K8ZA0DliacHPyRg==","shasum":"e773f854d265a9ba9aa2d05f4c4b18bbc38495e6","tarball":"https://registry.npmjs.org/happn-db-provider-elasticsearch/-/happn-db-provider-elasticsearch-1.0.2.tgz","fileCount":8,"unpackedSize":42495,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiKzO+ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqNVQ/6Av/ha+0FeEX6jQWw22fb8thZnNwlqcnzvWtY1kAv6eL2uGxn\r\nWlJNzdtaGer8wgsG3/BlwmnGxWY8DiY0zKG0Di8NorZPo8RMzX/dCs8/gaur\r\npGoef3CmD5w4FeDLQRDroRpHeECtH+5+yBfhOTXdchYwgcW0PGWPKlRuOWsa\r\nixHKJowaIdHjgJdQkTrrhVIbirOMtcAVuGlW4N3nHAX7rdIVXZX8Jd8p7A2h\r\nQ5UBSxfZAvAE28HSLYjeTMlstK7FvSBhRWLONy5W14APXtQPOy52pRWQy+M4\r\nnXcCSq6WBLhM/b7baybgwUFP5xDvwFgvAZdrftx/4K45Lt75nkbND8TDVqhj\r\nOmuOVZbPnmgJsapZTd0OGkJJ+r/BhdZvP+KTIqWm6pDIJSEymqZGCA+g+oEV\r\nvBQ0xp4/7Rk+n0DeezNL0ZAsWz3DwFIMmCFXeeasa39GZfVd8XhRxIkV1Dbw\r\naudybgjEgBzEcyFrQiqPO4MhB9Vx10yaJeXjsq+G236GkuHknPzxOFfySBLn\r\n3/Nf843WpP8l4e8Tw/Y1XzRdNxsPxUZFABovxQapshblbdOz3WJausxL2Iuo\r\naS4VEQqfHz2mJgvFCn6GKNheMfRKI0wRAc1ROdRHrFZ4ppiAH3kNscKeks3V\r\njRyIB7tWA8mSSIgumVdjxD5tgO5xSu773jU=\r\n=MYwp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAbHbbv9zQLOSyaGWcd4oJUSvO6riP5HVPdJd36gRS/cAiAdR+BQEWRWAt6UaUtQ160VuufNJGhpEDYuJubvMwfBZw=="}]},"_npmUser":{"name":"smc-tenacious","email":"eggers.jens@gmail.com"},"directories":{},"maintainers":[{"name":"smc-tenacious","email":"eggers.jens@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/happn-db-provider-elasticsearch_1.0.2_1646998462732_0.7891399614967212"},"_hasShrinkwrap":false},"1.0.3":{"name":"happn-db-provider-elasticsearch","version":"1.0.3","private":false,"scripts":{"test":"_mocha --recursive --exit silence.js test/*","test-cover":"nyc --reporter=lcov --reporter=text --reporter=html npm test","test-unit":"mocha silence.js test/unit/* --recursive"},"dependencies":{"happn-commons":"^1.0.2","agentkeepalive":"^3.3.0","bluebird":"2.10.2","elasticsearch":"^13.2.0","extract-values":"^0.1.2","happn-logger":"^2.0.3","micromustache":"^5.2.0","redis-lru-cache":"^1.0.3","traverse":"0.6.6"},"devDependencies":{"happn-commons-test":"^1.0.3","happn-3":"^13.0.5","json-from-schema":"1.10.0"},"gitHead":"3997c08f5f2630e6e099b8496e2620083b3d5eb8","description":"happner elastic dataprovider ---------------------------- *This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*","_id":"happn-db-provider-elasticsearch@1.0.3","_nodeVersion":"16.13.1","_npmVersion":"8.5.4","dist":{"integrity":"sha512-eS8J6H0oFFqkU4FjZtXjG78UrAqdR0XQhiYTS5l3zd5Wc5h/WYcTIZ1DcbYy/rzDrrQ0CyJNcx45KJbRbnKIQw==","shasum":"31e3a79d282b840192abcde4f7ad9b30e06cc876","tarball":"https://registry.npmjs.org/happn-db-provider-elasticsearch/-/happn-db-provider-elasticsearch-1.0.3.tgz","fileCount":8,"unpackedSize":42863,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiQ/39ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoNAQ//TzFA/3fo2D1+lHVUvFzEMapCIwl2ceS3zMAo7X62IabgAxfR\r\ncvqlkR/6H/o5KY1koYgoz5oPkV9CXfjxhf4H62wnX0vTF3Z4jVR9EUaQqfNy\r\nG9kjfmNBwpESI5cjnG46bBfKdMi5/LVSvqKlcsV1jHKq711UAW+CgiG/GxmR\r\nzOi1+KH/FQ+yPNFf0fKt4rElreXYG5XyglfKKYa2mssB2y/EQaefZWHr9UnS\r\nHtxr4TnvfIOxcIaR1s/u6JS2beZkIyb/5Hj8c+7NOWwfhKPTY5hu6uZOFdhK\r\nCcF6FWfHhq3oxIsdOlZOcCO0znUvOdkd1hGgb2TWdu794mShGqQ4tHja+UPq\r\nFM/WrUfMxe0E+2m4U6eVbRrJlsYZNq3siYntEBLwNht8X4iNUTnIMexPDpkP\r\n61jZ0HfE4Q/s7wn0moxb7CsGOzFb4vGuM0bui0fiBkH58zqZMpT54bZ9PXis\r\nQec2+1j98XgjiWa3uhR3Q0qDi9xNv1lA4QPxAcjCT3oqwLJO19O4LS+Olg29\r\ntQxn3Fqtz8JwLa7tbmv+9sdynjIIcLHK+XKUW8oYGrV+CWIL5o8E0cHQc4au\r\nvNSePWVBUeCqlR+2Ac9GWiMbaESIUl23qg4DzzTNiYA/1zCvB40t8SUsIS8z\r\n5c01ctmS+k5qnHeiWyud56cUariPwGSdUP8=\r\n=iigB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDzm4p79qzBFC8ozamtUrUAH12jXVPwVcV+6JhtzYsRYQIhAObB/lbWzIXnKZ8acmquOQTv9K/zjtJym1XWYILMel2m"}]},"_npmUser":{"name":"smc-tenacious","email":"eggers.jens@gmail.com"},"directories":{},"maintainers":[{"name":"smc-tenacious","email":"eggers.jens@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/happn-db-provider-elasticsearch_1.0.3_1648623101533_0.7644599125951759"},"_hasShrinkwrap":false},"1.0.4":{"name":"happn-db-provider-elasticsearch","version":"1.0.4","private":false,"scripts":{"test":"_mocha --recursive --exit silence.js test/*","test-cover":"nyc --reporter=lcov --reporter=text --reporter=html npm test","test-unit":"mocha silence.js test/unit/* --recursive"},"dependencies":{"happn-commons":"^1.0.2","agentkeepalive":"^3.3.0","bluebird":"2.10.2","elasticsearch":"^13.2.0","extract-values":"^0.1.2","happn-logger":"^2.0.3","micromustache":"^5.2.0","redis-lru-cache":"^1.0.4","traverse":"0.6.6"},"devDependencies":{"happn-commons-test":"^1.0.3","happn-3":"^13.0.6","json-from-schema":"1.10.0"},"gitHead":"3f62bcb746ed5b2be4da47273ddb0458ebe6cb81","description":"happner elastic dataprovider ---------------------------- *This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*","_id":"happn-db-provider-elasticsearch@1.0.4","_nodeVersion":"16.13.1","_npmVersion":"8.5.4","dist":{"integrity":"sha512-3fqGdXLYTnpjfkHd2CWWbWDeA8eIshurbZ9xtlTgEpgCY/Do4w09OYJ5n5RBV3zoHEopd1FO0sVMaa7mFh3pIA==","shasum":"9a6940b994aef9650fe6953a60626594b433411b","tarball":"https://registry.npmjs.org/happn-db-provider-elasticsearch/-/happn-db-provider-elasticsearch-1.0.4.tgz","fileCount":8,"unpackedSize":43031,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGVYkJgHdExDsyWqWt8zkbVL5afRdBcSeytg4lEsTHPjAiEAu54avam1prvesI7Gux7yX6x/HeCA5a/+OZjwAhPqjLw="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiTyf9ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpgAg/+OOyTECdCx41ce3fJBEyhoSzPZ2ut4ryEeutgnYAF/x1IP6IF\r\nlDHuws5j6aQb2sIH2teP4yh7m/PTkd5FD/OmV0lwAQfPwxQvniXPu/xOYv3A\r\noa3aTLTGxpQq/8bKNqhqFoCoSiqzZJ6os361rHiu5N7yzorTNVyvyIA44yd2\r\nFLKHrgobSF7sVmeGdSVONCObnTVfUt9cXnHRWo4JREkI4pMLjsRV7AxAxP0b\r\nvc1pnla8ITIDFiMIA4zMXt5v9xg7dtOS+spqNjvJ+bie7Cjz579ZifchIAf+\r\n6TjjhJmORdyA6utf6GUX557WQpwxYPOaR7POzF4BZ1F6jkyviNPnAJg/e0G+\r\n65pah/Crna+I9xjSTf3eN7m9m0WzTvNEEixgvJsN1Mu+g1J5BhWN2tEse0qc\r\nWzKTWv39FGoRiEQFsKBwkH1iz/5H0o7t36+Y255I078E1OVjZsIpmWpKLVdF\r\nEq024wrXbszdLpYgpYSLWzr+jyH7g0CWwcXzaPGII1/DD9C0uBEsGjBDiKr1\r\nExb336niBmGKMDSaSYYt03xr7T8ZinCIg3C7EaYDt4UCLWFp08tOkJZxdTv3\r\n9x3bnSH0RQLBr/7XJoffE7gfvkZWZr0m+4SEJ3EssAWUWd8iKOimnBuo2fk3\r\nvWG0U719uPip4GxUvdHqRkPAV2rs8BiXfIs=\r\n=iRDY\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"smc-tenacious","email":"eggers.jens@gmail.com"},"directories":{},"maintainers":[{"name":"smc-tenacious","email":"eggers.jens@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/happn-db-provider-elasticsearch_1.0.4_1649354748799_0.1064419541303736"},"_hasShrinkwrap":false},"1.0.5-prerelease-1":{"name":"happn-db-provider-elasticsearch","version":"1.0.5-prerelease-1","private":false,"scripts":{"test":"_mocha --recursive --exit silence.js test/*","test-cover":"nyc --reporter=lcov --reporter=text --reporter=html npm test","test-unit":"mocha silence.js test/unit/* --recursive"},"dependencies":{"happn-commons":"^1.0.2","agentkeepalive":"^3.3.0","bluebird":"2.10.2","elasticsearch":"^13.2.0","extract-values":"^0.1.2","happn-logger":"^2.0.3","micromustache":"^5.2.0","redis-lru-cache":"^1.0.5-prerelease-1","traverse":"0.6.6"},"devDependencies":{"happn-commons-test":"^1.0.3","happn-3":"^13.0.7-prerelease-1","json-from-schema":"1.10.0"},"readme":"happner elastic dataprovider\n----------------------------\n*This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*\n\n### supports elastic <= 6.4.0\n\n### installing elasticsearch and redis on your local machine:\n```bash\n# elastic search - version is 5.1.1\ndocker pull docker.elastic.co/elasticsearch/elasticsearch:5.1.1\n\ndocker run -p 9200:9200 \\\n    -p 9300:9300 \\\n    -e \"xpack.security.enabled=false\" \\\n    docker.elastic.co/elasticsearch/elasticsearch:5.1.1\n\n# redis\ndocker pull redis\n\ndocker run -p 6379:6379 -d redis\n```\n\n### installation instructions:\n\n```bash\n#install deps\nnpm install happner-elastic-dataprovider\n#test run - most should pass\nmocha test/func\n\n#now run the historian data upload - this is demo code\nnode test/historian/server/start.js\n```\n\n#### Installing ElasticSearch and running ElasticSearch\n\n```bash\ncurl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.1-linux-x86_64.tar.gz\ntar -xvf elasticsearch-5.5.1-linux-x86_64.tar.gz \n./elasticsearch-5.5.1/bin/elasticsearch\n\n\n```\n### configuration:\n\n```javascript\n\n//single use config - everything goes into elasticsearch\nvar config = {\n  happn:{\n    services:{\n      data:{\n        config:{\n          datastores:[\n            {\n              name:'elastic',\n              provider:'happner-elastic-dataprovider',\n              settings:{\"host\":\"localhost:9200\"},\n              isDefault:true\n            }\n          ]\n        }\n      }\n    }\n  }\n};\n\n//dual config, send all items starting with the path /history/ to elastic search, all others go to the default nedb instance\nvar config = {\n  happn:{\n    services:{\n      data:{\n        config:{\n          datastores:[\n            {\n              name:'elastic',\n              provider:'happner-elastic-dataprovider',\n              settings:{\"host\":\"localhost:9200\"},\n              patterns:[\"/history/*\"]\n            },\n            {\n              name:'happn',\n              isDefault:true\n            }\n          ]\n        }\n      }\n    }\n  }\n};\n\n//then create happner instance as usual:\n\nvar Happner = require('happner');\n\nHappner.create(config)\n\n.then(function(mesh) {\n// got running mesh\n})\n\n.catch(function(error) {\nconsole.error(error.stack || error.toString())\nprocess.exit(1);\n});\n\n```\n\nHappner setup instructions in more detail [here](https://github.com/happner/happner/blob/master/docs/walkthrough/the-basics.md).\n\n## Supported Mongo Style Search Parameters \n\n* $eq\n* $gt\n* $gte\n* $in\n* $lt\n* $lte\n* $ne\n* $nin\n* $and\n* $not\n* $nor\n* $or\n* $exists\n* $regex\n\n### Limitations\n\n## sorting by a text field\n```javascript\n\nvar test_path = '/1_eventemitter_embedded_sanity/' +\n    test_id +\n    '/test subscribe/data/complex/' +\n    require('shortid').generate();\n\nvar complex_obj = {\n  regions: ['North', 'South'],\n  towns: ['North.Cape Town'],\n  categories: ['Action', 'History'],\n  subcategories: ['Action.angling', 'History.art'],\n  keywords: ['bass', 'Penny Siopis'],\n  field1: 'field1'\n};\n\nvar options1 = {\n  sort: {\n    'data.field1': 1 //unless you have set up the index mapping to make 'data.field1' a keyword, this search  will fail, see ./test/__fixtures/happn-config for a keyword mapping\n  },\n  limit: 1\n};\n\nawait publisherclient.set(test_path, complex_obj);\n\n// because we sorting by a text field this will be rejected, you can sort by dates and number type fields however\nconst results = await publisherclient.get(\n  '/1_eventemitter_embedded_sanity/' + test_id + '/test subscribe/data/complex/*',\n  {\n    criteria: criteria1,\n    options: options1\n  }\n);\n\n```\n\n#### Embedded documents \nEmbedded documents works slightly different than traditional mongo queries\nConsider the following document:\n\n\n`\n{\n size:{\n        h: 14, \n        w: 21, \n        uom: \"cm\" \n    }\n}\n`\n\nField order does not matter for this provider while they matter for regular mongo. Given the following query, mongo would not match while this provider will. \n\n`\n{\n size:{\n        w: 21, \n        h: 14, \n        uom: \"cm\" \n    }\n}\n`\n\nWhen a document is specified as an query mongo requires the document to be a precise match. This provider only requires the specified fields to match. The following query will match using this provider but won't match using mongo\n\n` {\n  size:{\n         w: 21, \n         h: 14 \n              }\n }`","readmeFilename":"readme.md","gitHead":"08ced38d5468b8f872d6d8bf0d3c1dd8edc54d08","description":"happner elastic dataprovider ---------------------------- *This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*","_id":"happn-db-provider-elasticsearch@1.0.5-prerelease-1","_nodeVersion":"16.13.1","_npmVersion":"8.5.4","dist":{"integrity":"sha512-t3nRRgzh/zC1g1ehtYqXOCGGk8GVjyPvKiNBuhXJSaKZulz4hZWYhVxejEsvI/qY9I06GTg1YOlJFHytB2SGEQ==","shasum":"275150329f3bf87ba0a82d8d1af0e7938077181a","tarball":"https://registry.npmjs.org/happn-db-provider-elasticsearch/-/happn-db-provider-elasticsearch-1.0.5-prerelease-1.tgz","fileCount":8,"unpackedSize":43153,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDeeNyOfACLDmQJIhTce9tLcnTKMXwlCnB89XGlXwMxSAIhANd5r+iu+Nk2JBPUtXj4gKatslzcxIM9NiBZSylIbX4+"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiYHg3ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoGqg/9G6Iil0KPRkFLiozWs82/qwRbCzHWY2wW49At4ovJYHIn3JF7\r\nerefB7E+kQ6PdVNBHBXAeq/HgO6FgxihG8/1p4B0FHgLFKVPfw25TULyugH/\r\n1DiyMhzGtBASb2PAy7EiwfyQkyHU+pIYW/Y1vpttl161X8QVJ7dnGB7UHL8h\r\nDiLC3NQmfbMNPOg8lT0uYIBHhONIVk90taYKvi8N8sCEjn0pdpDdmt2mnx7f\r\nPFNR84RQacBMAiqIgl02IOqxs8Sh2NgHRNkyrYk88A/CGOieOwPJdIed0yRg\r\nEGIqND+/iHOOIJIvB+LKwRZ0DynCOnqJwEWJMuqHKyjysYecOqH298fr/5CM\r\n2gJPO04OdjOBlZLSgSnJqm5VufrYnIqlr7etP2SNlFitutnDBSr6eFZa3j2h\r\n7sGZYzkerSP+hXWUTjtqYGFXlDZZCxDE70LWTlslHI8flKIPITQtRq/FIO9l\r\nDi4i+5VwxmEGliKjcPvWV3fD47QiVuoOntE0SBIPbrPHGdiA4bl9BJ+k/Dxn\r\n2WgFeV1F+vtxc+90vtYqDA3kFlT3She8I5V2yrvBwvwxssZupIddaYGffwLP\r\nzFIInnD5Cly9r9BKfX368t5A/IIi5nrgiBAJl2PG852Iap2XbHo+Oyt3bBJx\r\nwuHQaU/ah4Y9W1Z1w4VcmbkT8yyWTOZIvLM=\r\n=u4Lj\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"smc-tenacious","email":"eggers.jens@gmail.com"},"directories":{},"maintainers":[{"name":"smc-tenacious","email":"eggers.jens@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/happn-db-provider-elasticsearch_1.0.5-prerelease-1_1650489399465_0.700378963668745"},"_hasShrinkwrap":false},"1.0.5-prerelease-2":{"name":"happn-db-provider-elasticsearch","version":"1.0.5-prerelease-2","private":false,"scripts":{"test":"_mocha --recursive --exit silence.js test/*","test-cover":"nyc --reporter=lcov --reporter=text --reporter=html npm test","test-unit":"mocha silence.js test/unit/* --recursive"},"dependencies":{"happn-commons":"^1.0.2","agentkeepalive":"^3.3.0","bluebird":"2.10.2","elasticsearch":"^13.2.0","extract-values":"^0.1.2","happn-logger":"^2.0.3","micromustache":"^5.2.0","redis-lru-cache":"^1.0.5-prerelease-2","traverse":"0.6.6"},"devDependencies":{"happn-commons-test":"^1.0.3","happn-3":"^13.0.7-prerelease-2","json-from-schema":"1.10.0"},"readme":"happner elastic dataprovider\n----------------------------\n*This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*\n\n### supports elastic <= 6.4.0\n\n### installing elasticsearch and redis on your local machine:\n```bash\n# elastic search - version is 5.1.1\ndocker pull docker.elastic.co/elasticsearch/elasticsearch:5.1.1\n\ndocker run -p 9200:9200 \\\n    -p 9300:9300 \\\n    -e \"xpack.security.enabled=false\" \\\n    docker.elastic.co/elasticsearch/elasticsearch:5.1.1\n\n# redis\ndocker pull redis\n\ndocker run -p 6379:6379 -d redis\n```\n\n### installation instructions:\n\n```bash\n#install deps\nnpm install happner-elastic-dataprovider\n#test run - most should pass\nmocha test/func\n\n#now run the historian data upload - this is demo code\nnode test/historian/server/start.js\n```\n\n#### Installing ElasticSearch and running ElasticSearch\n\n```bash\ncurl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.1-linux-x86_64.tar.gz\ntar -xvf elasticsearch-5.5.1-linux-x86_64.tar.gz \n./elasticsearch-5.5.1/bin/elasticsearch\n\n\n```\n### configuration:\n\n```javascript\n\n//single use config - everything goes into elasticsearch\nvar config = {\n  happn:{\n    services:{\n      data:{\n        config:{\n          datastores:[\n            {\n              name:'elastic',\n              provider:'happner-elastic-dataprovider',\n              settings:{\"host\":\"localhost:9200\"},\n              isDefault:true\n            }\n          ]\n        }\n      }\n    }\n  }\n};\n\n//dual config, send all items starting with the path /history/ to elastic search, all others go to the default nedb instance\nvar config = {\n  happn:{\n    services:{\n      data:{\n        config:{\n          datastores:[\n            {\n              name:'elastic',\n              provider:'happner-elastic-dataprovider',\n              settings:{\"host\":\"localhost:9200\"},\n              patterns:[\"/history/*\"]\n            },\n            {\n              name:'happn',\n              isDefault:true\n            }\n          ]\n        }\n      }\n    }\n  }\n};\n\n//then create happner instance as usual:\n\nvar Happner = require('happner');\n\nHappner.create(config)\n\n.then(function(mesh) {\n// got running mesh\n})\n\n.catch(function(error) {\nconsole.error(error.stack || error.toString())\nprocess.exit(1);\n});\n\n```\n\nHappner setup instructions in more detail [here](https://github.com/happner/happner/blob/master/docs/walkthrough/the-basics.md).\n\n## Supported Mongo Style Search Parameters \n\n* $eq\n* $gt\n* $gte\n* $in\n* $lt\n* $lte\n* $ne\n* $nin\n* $and\n* $not\n* $nor\n* $or\n* $exists\n* $regex\n\n### Limitations\n\n## sorting by a text field\n```javascript\n\nvar test_path = '/1_eventemitter_embedded_sanity/' +\n    test_id +\n    '/test subscribe/data/complex/' +\n    require('shortid').generate();\n\nvar complex_obj = {\n  regions: ['North', 'South'],\n  towns: ['North.Cape Town'],\n  categories: ['Action', 'History'],\n  subcategories: ['Action.angling', 'History.art'],\n  keywords: ['bass', 'Penny Siopis'],\n  field1: 'field1'\n};\n\nvar options1 = {\n  sort: {\n    'data.field1': 1 //unless you have set up the index mapping to make 'data.field1' a keyword, this search  will fail, see ./test/__fixtures/happn-config for a keyword mapping\n  },\n  limit: 1\n};\n\nawait publisherclient.set(test_path, complex_obj);\n\n// because we sorting by a text field this will be rejected, you can sort by dates and number type fields however\nconst results = await publisherclient.get(\n  '/1_eventemitter_embedded_sanity/' + test_id + '/test subscribe/data/complex/*',\n  {\n    criteria: criteria1,\n    options: options1\n  }\n);\n\n```\n\n#### Embedded documents \nEmbedded documents works slightly different than traditional mongo queries\nConsider the following document:\n\n\n`\n{\n size:{\n        h: 14, \n        w: 21, \n        uom: \"cm\" \n    }\n}\n`\n\nField order does not matter for this provider while they matter for regular mongo. Given the following query, mongo would not match while this provider will. \n\n`\n{\n size:{\n        w: 21, \n        h: 14, \n        uom: \"cm\" \n    }\n}\n`\n\nWhen a document is specified as an query mongo requires the document to be a precise match. This provider only requires the specified fields to match. The following query will match using this provider but won't match using mongo\n\n` {\n  size:{\n         w: 21, \n         h: 14 \n              }\n }`","readmeFilename":"readme.md","gitHead":"e77deeac07289dc47ed7a1aa8e36d4c1db2eb090","description":"happner elastic dataprovider ---------------------------- *This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*","_id":"happn-db-provider-elasticsearch@1.0.5-prerelease-2","_nodeVersion":"16.13.1","_npmVersion":"8.5.4","dist":{"integrity":"sha512-QTGAebgsI2mq620ZkwhULpQ1prhZUzXy/Uqs+DCEYUEuHynybv4EolXwexfRCdfWRfFJWIdf4anblTlOeZCWng==","shasum":"f56a06bb09cde8ebf05a7225a80e3feaaa4a61af","tarball":"https://registry.npmjs.org/happn-db-provider-elasticsearch/-/happn-db-provider-elasticsearch-1.0.5-prerelease-2.tgz","fileCount":8,"unpackedSize":43153,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDMSGUxBy5HUcP+QoTNd9fP+2YXTGnTMf2cfJqDbgHFmQIhAOYP/U86jBc170efSK3+ztK9ETKbCqJ4ibL2vObpYLG+"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiapRDACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqoNg//bzTodztqLFhpc5hYLJiojql+7GWuVwePY/GLwFYNa0XwTqVF\r\nbb2Ertm+/ExTia26SzmuclK24dKy+MrNVKhYWGJaUcEy1J8X/p/NiaJzFVM6\r\nIdAnRR33CX8/Uag7OrhVEasAIoBwA8i2daRxBGUWFyP4U8ozNniFMO+lUqBV\r\n+6U5c7pSknYjfLEqkF9g78lUcBtmlF/a4nvX2wYMDSG4tu8FE6j5VvUZU/iX\r\nzNv3/0vDPqz6sn7n54ki5S1EQaIIOg8RlK/o8Z98HFEhTGpEhn1qq5rvxOLZ\r\nrCTyfoBRDivZ3cyorugMtRU/sekVUS1qi2NczxGmoGmToRUNYvq4gcj6rrS9\r\n1Kn/DY5BvCteQbgSFQ1u/XdRAn1OEAgB3NxIix1ndabBxW5NgKCOqfliFZ0t\r\nZMTYz5YC3wNGaHzmMhmDGckMSEQVOd9hzqrcA57wQ99ETPhsiNCFHNS3r8l8\r\n1w+RyMueIbP1AoDE0vVuA5pEbEYMzNtFwuKUUm19Y3jurBSPoDoWChCSxHv6\r\nz7ekDwNpHA6qbnlHgByz/ALMYDP9ajYlLVpZFZocEwkizaKqENMwDlRFrHwE\r\npzMUsLXF+/6phc+ZyMtWnWPOMU1a+RTi0JA73Pgo0cwoopEWx7rYRhsf1x0j\r\nJbBwQ1MCtMJb41Gy8Yc5xmTEs7T7V5wq178=\r\n=u68U\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"smc-tenacious","email":"eggers.jens@gmail.com"},"directories":{},"maintainers":[{"name":"smc-tenacious","email":"eggers.jens@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/happn-db-provider-elasticsearch_1.0.5-prerelease-2_1651151939088_0.4045909518010986"},"_hasShrinkwrap":false},"1.0.5":{"name":"happn-db-provider-elasticsearch","version":"1.0.5","private":false,"scripts":{"test":"_mocha --recursive --exit silence.js test/*","test-cover":"nyc --reporter=lcov --reporter=text --reporter=html npm test","test-unit":"mocha silence.js test/unit/* --recursive"},"dependencies":{"happn-commons":"^1.0.2","agentkeepalive":"^3.3.0","bluebird":"2.10.2","elasticsearch":"^13.2.0","extract-values":"^0.1.2","happn-logger":"^2.0.3","micromustache":"^5.2.0","redis-lru-cache":"^1.0.5","traverse":"0.6.6"},"devDependencies":{"happn-commons-test":"^1.0.3","happn-3":"^13.0.7","json-from-schema":"1.10.0"},"gitHead":"c43c08f7d6add370bb58c1816466f52eecc7cb40","description":"happner elastic dataprovider ---------------------------- *This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*","_id":"happn-db-provider-elasticsearch@1.0.5","_nodeVersion":"16.13.1","_npmVersion":"8.5.4","dist":{"integrity":"sha512-TrbIgvcphynhJN1RsMSx3atrs2aUPsVkDc0iJigugK/VVGTuXt87jeqwDpYHh+2m3MFcxn+Q7on4aTtpQ2FHMw==","shasum":"938c71d7b06c5a570d609c8a1968d14688ea7736","tarball":"https://registry.npmjs.org/happn-db-provider-elasticsearch/-/happn-db-provider-elasticsearch-1.0.5.tgz","fileCount":8,"unpackedSize":43161,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD9IrD1XB/faRWCAA6rpiCXs5ppFaAq9qbQtKFth0YN5QIgUUUZWnZzQkFoEOgMXgiFjNtrblpv3ZxFIzyFHk27rF0="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJic47kACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq5uBAAoai+lDzEZSRabI3W78SL0upco5Eez7ujwU0lILD0VXBKpZAM\r\n8zILRsrrwEmei/dVSkQI/7KXWmopWTE7mQRzkJxnNY1wjGOJQZJwPSBgXcAh\r\nlRFBX1pfMeKiTg++r5lVbhXsV6fUOv5FW4yAaQLJpIncQUmbzEomy83oXuSD\r\nk/2CiljVGbVNB1HRdj2AYIMuIpyoukVvQfbE5S8Q8uO17lfDGqh64iOwse1B\r\nSDd1yLrfacqOeTSM9SrJ9/4x3Q/xwExJ6OPFHQpv703Ei8TAIvphKHDnwd6Z\r\n3b0djQfvU3rPx7Wf3kcgxwo/MkAaOHIzxGJA41yi2werlmMBcrKvgE2rKnZ0\r\ngmK03PgmPsIiA0L4NizCvcB2T8AqkCt7PwY0JKwFHVF1xeDJOJ2K8G1SvG4a\r\nJtmGUkIMhq2KMmJsASK/xU3twG0ytx0jA1vFqBKoxjrKsq6STr1KZzEnx1CK\r\n9esjTRmpzsBuOQe6K7kA9PApYdA693ULXIVjE2MZ/weVpClEetwtfpXZRggn\r\noFBExPNx1uAEY5fsP6oADRB1otlXHRSx92iAobAdhldfO4l6ERmD0mlCp5Op\r\nVRSnYEGrAvGjaeG6lqHYUaiPXgezOlm5f+P/s00A8CdKWoJyx0AMs41BUE+2\r\n01SiLPHX+SNevcbSSfGX5t2nAghT4ZIWXZ8=\r\n=EMST\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"smc-tenacious","email":"eggers.jens@gmail.com"},"directories":{},"maintainers":[{"name":"smc-tenacious","email":"eggers.jens@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/happn-db-provider-elasticsearch_1.0.5_1651740388461_0.05438774535641744"},"_hasShrinkwrap":false},"1.0.6":{"name":"happn-db-provider-elasticsearch","version":"1.0.6","private":false,"scripts":{"test":"_mocha --recursive --exit silence.js test/*","test-cover":"nyc --reporter=lcov --reporter=text --reporter=html npm test","test-unit":"mocha silence.js test/unit/* --recursive"},"dependencies":{"happn-commons":"^1.0.2","agentkeepalive":"^3.3.0","bluebird":"2.10.2","elasticsearch":"^13.2.0","extract-values":"^0.1.2","happn-logger":"^2.0.3","micromustache":"^5.2.0","redis-lru-cache":"^1.0.6","traverse":"0.6.6"},"devDependencies":{"happn-commons-test":"^1.0.3","happn-3":"^13.0.8","json-from-schema":"1.10.0"},"gitHead":"d68815dad1ca4a5b9c44b8fcda872c001fdffb76","description":"happner elastic dataprovider ---------------------------- *This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*","_id":"happn-db-provider-elasticsearch@1.0.6","_nodeVersion":"16.13.1","_npmVersion":"8.5.4","dist":{"integrity":"sha512-yWSJcAom1PFkiK13x2BmufgrkJZpsL+t50d8VlXhzIqMxU1fa91icoNsYR/7K+iyAnyRweZXJkJPpVoQaITfuA==","shasum":"d3e3af28b7d53394694ee1de66cbeea4691915d9","tarball":"https://registry.npmjs.org/happn-db-provider-elasticsearch/-/happn-db-provider-elasticsearch-1.0.6.tgz","fileCount":8,"unpackedSize":43255,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFrPSDU767eL22fg2i0ZSgoPacYnQmGKpe4/gHJDq7GlAiEA1DSLyjPOGytnBBzn4pDc9k6/H8alta3C3o7VuRk02Y8="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJidOC8ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrFrRAAlRZSlFHGxkWZU7RypI6gBqArBBBVaWl6SKye/qgzKIeqHv4D\r\nSlyms0QW7XQ3yThOjJ5KLFj//03EKsbStaOtbRk04qzhyp38FfxI9XiZD7N1\r\nTm19opQ6fH4e8JZq5aXh7g71jvaai3kUaPhMCwgBZXqHvgWApe//X6hBuDvZ\r\ngPOeVYZU4saNGEuMDf6PY6+fVPNmT2KgRNql68s1rhuqnCxLim3IXM4zJEUS\r\nDN/wymPEYvkTbDV70Vqr6BbkyGjwm6qt3rFsHzAs2gDFFH+SsgqbBpCKxnwu\r\nyrd673KZkJit2z1ocoolOZz3vY/aBw5Ng9/fTgyhKyHHp4a4WwJjg8yUIcUo\r\nYNQf3mK0Dtiq/PF/G1TjeJN34Txe/fWPUvCLs02w9sUdsN0hRfDFwtbZQd8U\r\nPJjwrzb9vgN+0u09C7T691yDeXvOVPNel/V6sdphP1HL4XTbOmRqrIyAluEJ\r\nFRu0qOnBVLsdk2mg5GfeFKXoyrPmmJxnPdNV86DpN+Rtlj7+Ec4gDi86EVt9\r\nqDUufUzs9vW0CxsM2bPLwGvzB9dg06Y79p1mFH+6IfYPQkKk8mRHzpodhfiS\r\nFFK1j0f9dIJHUzdl7PBpbSGl00eh7bVsB92fqMxKWpO831rKRolp1YS0M3nN\r\nrDyUYeYzv0vnI8tA0C/XDR6IxicHo3k0Q7s=\r\n=pHWL\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"smc-tenacious","email":"eggers.jens@gmail.com"},"directories":{},"maintainers":[{"name":"smc-tenacious","email":"eggers.jens@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/happn-db-provider-elasticsearch_1.0.6_1651826876647_0.46942967940649716"},"_hasShrinkwrap":false},"1.0.7":{"name":"happn-db-provider-elasticsearch","version":"1.0.7","private":false,"scripts":{"test":"_mocha --recursive --exit silence.js test/*","test-cover":"nyc --reporter=lcov --reporter=text --reporter=html npm test","test-unit":"mocha silence.js test/unit/* --recursive"},"dependencies":{"happn-commons":"^1.0.2","agentkeepalive":"^3.3.0","bluebird":"2.10.2","elasticsearch":"^13.2.0","extract-values":"^0.1.2","happn-logger":"^2.0.3","micromustache":"^5.2.0","redis-lru-cache":"^1.0.7","traverse":"0.6.6"},"devDependencies":{"happn-commons-test":"^1.0.3","happn-3":"^13.0.9","json-from-schema":"1.10.0"},"gitHead":"8dd744295543c51442b6a046e781919c72574361","description":"happner elastic dataprovider ---------------------------- *This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*","_id":"happn-db-provider-elasticsearch@1.0.7","_nodeVersion":"16.13.1","_npmVersion":"8.5.4","dist":{"integrity":"sha512-2alDuV7EDg3ayykDe+K9iVfGv0IjO+4NS0Wpf2ZRwfR2BjrlFBzrfG/aDWn6UO4XE0gyhapCrcJku3X6QwK5VQ==","shasum":"4ce66f26200f5f8e1a9812eb640b46746274d76e","tarball":"https://registry.npmjs.org/happn-db-provider-elasticsearch/-/happn-db-provider-elasticsearch-1.0.7.tgz","fileCount":8,"unpackedSize":43378,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH4ZFiSYrKgAshe49Y+XSS9T7DAEOe6Ys2EAqvmcKrqVAiA3a5RtEIa/fGpzPiS+sbMPVnBm4WTK00WfIXumFzyBJQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJieTR8ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqoEhAAgJ48yIusuLHpk4teMfbnzhF6Z1EOZSRxYJpQ/m0i5Y1+nUUz\r\nM/X6OaPGK5GdrIMVVtrtFOG7nLxO3aeAInDPnfYrr6Hk2AiMhsSSGvKJ4cy0\r\nxYQqYwbE3dL9zvk4OV6V3prs8vJ0yJS4xbcxWo91VIGNQenYppCnr3Y08rs4\r\nSvvmpmAAsy/2yDmZ9z4MQMGIe4PahRFKhFYekph3QsXEOiahQ2ITEiJ3YheN\r\nNUwg3W/uqFgJ6SXI8i46O5OF1v50TgGV9Y8Jmg7yI+PE9pNPnG5D8+pdaNKm\r\nkaNkvh5amRSyO9z76ooefsBKm1KpD6eweEZea+WwcF1FdlUKWYSdiwI7UGb2\r\nn22sd37eqHdZPB5jNlDLmFfvsrqyl1A9S1LR/wotYH6JqKHAQDpqAkDd7hSk\r\nALyqNtZLSKdecPMa6fAr+6BAlwmCrUKybBheHN5D0XDJrqqnjlZ6dheWLi0x\r\nfypsOolRYohXLk32GfFL5mtoX1UxSmIUFWYG7JXBrQ+mKy3pZvllNg1CIRXw\r\nFbg9jTl3s/uFUxQhJh4LOroX0suZJSajtKO992ECcGztNRemRXxkMc+P/AuQ\r\nCaDRRzMCx/wgo8o28oE2ZwNsMDJLOOdwBS1VPGBcqzOFnN46nOhjw1IM+Mph\r\nt4vyUt3l9+aHD3spJbeDWIFXq0mCydmZ2GA=\r\n=ZJwq\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"smc-tenacious","email":"eggers.jens@gmail.com"},"directories":{},"maintainers":[{"name":"smc-tenacious","email":"eggers.jens@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/happn-db-provider-elasticsearch_1.0.7_1652110459853_0.6282314081034099"},"_hasShrinkwrap":false},"1.0.8-prerelease.1":{"name":"happn-db-provider-elasticsearch","version":"1.0.8-prerelease.1","private":false,"scripts":{"test":"_mocha --recursive --exit silence.js test/*","test-cover":"nyc --reporter=lcov --reporter=text --reporter=html npm test","test-unit":"mocha silence.js test/unit/* --recursive"},"dependencies":{"happn-commons":"^1.0.3-prerelease.1","agentkeepalive":"^3.3.0","bluebird":"2.10.2","elasticsearch":"^13.2.0","extract-values":"^0.1.2","happn-logger":"^2.0.4-prerelease.1","micromustache":"^5.2.0","redis-lru-cache":"^1.0.8-prerelease.1","traverse":"0.6.6"},"devDependencies":{"happn-commons-test":"^1.0.4-prerelease.1","happn-3":"^13.0.10-prerelease.1","json-from-schema":"1.10.0"},"readme":"happner elastic dataprovider\n----------------------------\n*This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*\n\n### supports elastic <= 6.4.0\n\n### installing elasticsearch and redis on your local machine:\n```bash\n# elastic search - version is 5.1.1\ndocker pull docker.elastic.co/elasticsearch/elasticsearch:5.1.1\n\ndocker run -p 9200:9200 \\\n    -p 9300:9300 \\\n    -e \"xpack.security.enabled=false\" \\\n    docker.elastic.co/elasticsearch/elasticsearch:5.1.1\n\n# redis\ndocker pull redis\n\ndocker run -p 6379:6379 -d redis\n```\n\n### installation instructions:\n\n```bash\n#install deps\nnpm install happner-elastic-dataprovider\n#test run - most should pass\nmocha test/func\n\n#now run the historian data upload - this is demo code\nnode test/historian/server/start.js\n```\n\n#### Installing ElasticSearch and running ElasticSearch\n\n```bash\ncurl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.1-linux-x86_64.tar.gz\ntar -xvf elasticsearch-5.5.1-linux-x86_64.tar.gz \n./elasticsearch-5.5.1/bin/elasticsearch\n\n\n```\n### configuration:\n\n```javascript\n\n//single use config - everything goes into elasticsearch\nvar config = {\n  happn:{\n    services:{\n      data:{\n        config:{\n          datastores:[\n            {\n              name:'elastic',\n              provider:'happner-elastic-dataprovider',\n              settings:{\"host\":\"localhost:9200\"},\n              isDefault:true\n            }\n          ]\n        }\n      }\n    }\n  }\n};\n\n//dual config, send all items starting with the path /history/ to elastic search, all others go to the default nedb instance\nvar config = {\n  happn:{\n    services:{\n      data:{\n        config:{\n          datastores:[\n            {\n              name:'elastic',\n              provider:'happner-elastic-dataprovider',\n              settings:{\"host\":\"localhost:9200\"},\n              patterns:[\"/history/*\"]\n            },\n            {\n              name:'happn',\n              isDefault:true\n            }\n          ]\n        }\n      }\n    }\n  }\n};\n\n//then create happner instance as usual:\n\nvar Happner = require('happner');\n\nHappner.create(config)\n\n.then(function(mesh) {\n// got running mesh\n})\n\n.catch(function(error) {\nconsole.error(error.stack || error.toString())\nprocess.exit(1);\n});\n\n```\n\nHappner setup instructions in more detail [here](https://github.com/happner/happner/blob/master/docs/walkthrough/the-basics.md).\n\n## Supported Mongo Style Search Parameters \n\n* $eq\n* $gt\n* $gte\n* $in\n* $lt\n* $lte\n* $ne\n* $nin\n* $and\n* $not\n* $nor\n* $or\n* $exists\n* $regex\n\n### Limitations\n\n## sorting by a text field\n```javascript\n\nvar test_path = '/1_eventemitter_embedded_sanity/' +\n    test_id +\n    '/test subscribe/data/complex/' +\n    require('shortid').generate();\n\nvar complex_obj = {\n  regions: ['North', 'South'],\n  towns: ['North.Cape Town'],\n  categories: ['Action', 'History'],\n  subcategories: ['Action.angling', 'History.art'],\n  keywords: ['bass', 'Penny Siopis'],\n  field1: 'field1'\n};\n\nvar options1 = {\n  sort: {\n    'data.field1': 1 //unless you have set up the index mapping to make 'data.field1' a keyword, this search  will fail, see ./test/__fixtures/happn-config for a keyword mapping\n  },\n  limit: 1\n};\n\nawait publisherclient.set(test_path, complex_obj);\n\n// because we sorting by a text field this will be rejected, you can sort by dates and number type fields however\nconst results = await publisherclient.get(\n  '/1_eventemitter_embedded_sanity/' + test_id + '/test subscribe/data/complex/*',\n  {\n    criteria: criteria1,\n    options: options1\n  }\n);\n\n```\n\n#### Embedded documents \nEmbedded documents works slightly different than traditional mongo queries\nConsider the following document:\n\n\n`\n{\n size:{\n        h: 14, \n        w: 21, \n        uom: \"cm\" \n    }\n}\n`\n\nField order does not matter for this provider while they matter for regular mongo. Given the following query, mongo would not match while this provider will. \n\n`\n{\n size:{\n        w: 21, \n        h: 14, \n        uom: \"cm\" \n    }\n}\n`\n\nWhen a document is specified as an query mongo requires the document to be a precise match. This provider only requires the specified fields to match. The following query will match using this provider but won't match using mongo\n\n` {\n  size:{\n         w: 21, \n         h: 14 \n              }\n }`","readmeFilename":"readme.md","gitHead":"90268b6ca2497cf87638d323d872e74e1d442051","description":"happner elastic dataprovider ---------------------------- *This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*","_id":"happn-db-provider-elasticsearch@1.0.8-prerelease.1","_nodeVersion":"16.13.1","_npmVersion":"8.5.4","dist":{"integrity":"sha512-MwDNQUawvnRiCZihWx4WM1VuynCTdQpzibkcHZg9Fbihv8h5ZxDDwpM9w7I/4Qrl2pEebzOdnyoM32cOnZI9kQ==","shasum":"d2244a655685b88b126a88613218ce8785b17c21","tarball":"https://registry.npmjs.org/happn-db-provider-elasticsearch/-/happn-db-provider-elasticsearch-1.0.8-prerelease.1.tgz","fileCount":8,"unpackedSize":43539,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDSG9sX5J/iNl6QFhDql2dv/NIz6dHPtjtAae9DovlKBwIhAN3SQcSMHEzWO00WajMQpkYFAq896vI68MAUAnrV6gvl"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJig7imACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqpNBAAhZotBxi4vRRKWlX4pT67+r8F6yirq+jCOvGrmTCAHOuEGbtw\r\nJ7YiPbWCppo6+B0eujPnl7P7nUI+H0Hj/Qxt3dnzDboT17epNusjOdJeinFI\r\ng2e+xE0I/SbJJPLO4+QLhcAIlwW/2c5sTJNzYQL8098f9BEzlENEiajqWY1Y\r\n8qMTEFiuLu5jaS+l2uHjk1U/SfU5I+vLD54yDMp8QxeSbTPocaGgDwOvzfrb\r\nrK+dfK21UyB8nkjrPNrYCqIicAgRUnn/k1A9e2vVpMJfJpHyxWuXNViXoo64\r\nzzloNfMtNvNUKFXRe69rW8AD29B78+GQdCGLjfxvOTFL994LgYtvGDTZrdDV\r\nR1Qr3fhwgbmnyy5A5f47Q/Wim8ouDrO/zl9rkqtapkou+SYXvu+7HTBv4ait\r\noU4GbXe2VdXCWc++g/oaGLjQVR3as/u+2IOmU78nIq2RJNyPXA/U3Ms6GGCj\r\nOtEklprlR106VvUTjysUZQWQjG6C20ARH2paCa2fXAgB0RFU1sRyElcocQqs\r\nQadW/G9RgCSORAWmtvu4RKZUw3idy6XkgD8pSoUUugZkXMSzd+fhvR4IOD1O\r\ni1YluMIiUh1wQJoSK10wpsIRLzqQRJl5DNawY8OppybhNcK39XHKic/baeiL\r\nO07hX7uPu9aFhsAnXBey/B3+ypHj0ZQbplY=\r\n=36yQ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"smc-tenacious","email":"eggers.jens@gmail.com"},"directories":{},"maintainers":[{"name":"smc-tenacious","email":"eggers.jens@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/happn-db-provider-elasticsearch_1.0.8-prerelease.1_1652799654760_0.6963206450827335"},"_hasShrinkwrap":false},"1.0.8":{"name":"happn-db-provider-elasticsearch","version":"1.0.8","private":false,"scripts":{"test":"_mocha --recursive --exit silence.js test/*","test-cover":"nyc --reporter=lcov --reporter=text --reporter=html npm test","test-unit":"mocha silence.js test/unit/* --recursive"},"dependencies":{"happn-commons":"^1.1.0","agentkeepalive":"^3.3.0","bluebird":"2.10.2","elasticsearch":"^13.2.0","extract-values":"^0.1.2","happn-logger":"^2.1.0","micromustache":"^5.2.0","redis-lru-cache":"^1.0.8","traverse":"0.6.6"},"devDependencies":{"happn-commons-test":"^1.0.4","happn-3":"^13.1.0","json-from-schema":"1.10.0"},"gitHead":"9edbe27da81b88a20053d108053c413c570e545b","description":"happner elastic dataprovider ---------------------------- *This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*","_id":"happn-db-provider-elasticsearch@1.0.8","_nodeVersion":"16.13.1","_npmVersion":"8.5.4","dist":{"integrity":"sha512-MZc3olq4D1I7C/2x6h7G4cybBXrS5Bd0+AotEnqE0+S2F+hdvF1XpS1eueEs+qxNZulNnnaVc9l8giVqp87x0w==","shasum":"104108d62df817cb2a3cdfa8464be19979b93eea","tarball":"https://registry.npmjs.org/happn-db-provider-elasticsearch/-/happn-db-provider-elasticsearch-1.0.8.tgz","fileCount":8,"unpackedSize":43542,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICkxQWKqjRXJPcFQErzYaWZGQ4uUZlPz/dZ0iaTZTUagAiEAkaRzEOMIa1G1G9VvzMZssk7B18RyXMAB4hj/Enn+j+o="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJikPZvACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpaxRAAnxPkmtJEvC+U96PSlhr32pPyQ7hKpVZyExbYk8nDHZXgHdlq\r\n21bDswdkvW9dPjN9w+IRTallxkJkbuX2b2ITSTIv57wYvO93STUsjQM6pYrH\r\nfCeAWyNB/yefFdGZTdAJQzbrWKP6gY5ngMEhbPJh4Kq2HpmOVFKtX7VfAmF9\r\nbRMF4LShxU1jcBRnRIpxyXtaGQCSC4QkFLYkNmPcV9VMgTFtk0VekK++V1Fm\r\nDJPB13xu5FHBKYT1+HdKukl+qvm06+mpl4XoMJ5tMvSp7STq6fTeo0MAh+3z\r\n3mLCv9PreZFRZyY8vjeQY8K6wGTm03GIQS/BJdwb+x/MgrunzrBlhRp+gA1b\r\nNpVhgvTOhKsgIMk1j0422tMd9Q41Ytsf9JsStdK7iNfeu2Qu8Xs9+9efwAq8\r\np+rse43od5jUobOWO/QvRaIa9m3gnXk8tYwBKrKiGhnnhawfAB7BJaEPv2l5\r\n1/DlIqYvwNAXyOk4b3fe9kn7gKWvc/jEAdkxtv9CmWSW4CDJGVN1A7jBKBTq\r\n3uipXApBJzA5F2+dkrjKXyHvHBo0f2RMu/kgd5T+6iWvifpxJ2ED8yF/lqle\r\nBGgKeWRg+vmtuQtnSgcJYfg544YbulXhTNpu4gAOtm6vm8uTf96ehCUF6bAR\r\nHJsywClQLOmI2cyS7d79xJ0zeopPKLH6inU=\r\n=CxNG\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"smc-tenacious","email":"eggers.jens@gmail.com"},"directories":{},"maintainers":[{"name":"smc-tenacious","email":"eggers.jens@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/happn-db-provider-elasticsearch_1.0.8_1653667439187_0.08558058103834809"},"_hasShrinkwrap":false},"1.0.9":{"name":"happn-db-provider-elasticsearch","version":"1.0.9","private":false,"scripts":{"test":"_mocha --recursive --exit silence.js test/*","test-cover":"nyc --reporter=lcov --reporter=text --reporter=html npm test","test-unit":"mocha silence.js test/unit/* --recursive"},"dependencies":{"happn-commons":"^1.1.0","agentkeepalive":"^3.3.0","bluebird":"2.10.2","elasticsearch":"^13.2.0","extract-values":"^0.1.2","happn-logger":"^2.1.0","micromustache":"^5.2.0","redis-lru-cache":"^1.0.9","traverse":"0.6.6"},"devDependencies":{"happn-commons-test":"^1.0.4","happn-3":"^13.1.1","json-from-schema":"1.10.0"},"gitHead":"108837ca34de06783c28773b3032667ed076504c","description":"happner elastic dataprovider ---------------------------- *This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*","_id":"happn-db-provider-elasticsearch@1.0.9","_nodeVersion":"16.13.1","_npmVersion":"8.5.4","dist":{"integrity":"sha512-8QCQgjIVhI3WAa+smeKXSdqNDxXsxSFS22+wOpUY0lLi+0S8Yl7cfSJrunHkR0tcRAAgSQuulhzzWoi4VtI4lQ==","shasum":"2b570bfe7c2e6b1aefe6f5740cb3ab315b89a095","tarball":"https://registry.npmjs.org/happn-db-provider-elasticsearch/-/happn-db-provider-elasticsearch-1.0.9.tgz","fileCount":8,"unpackedSize":43663,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBSrNwzwGCt6KcXIwIrI2Um5WMgq/U3EkWd3+Sl8R194AiBS+BhKUfxzntvmy3oeh9pyFxhhi0nbeJhUcCAzLDIy8w=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJimeCGACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqJYRAAn4o6SG584kbJWZXYpIGbcWtSLjhC1UfzqOWQqgrtSMDTRKZj\r\njV6tWqJFNE9RFzVBE+ts6B5n0n50TAoRGIGsYNw0bMeZxIjpae0Iv4nmPL2G\r\nzf1Eb8kCHM2rofjmxejEUJAg49DYQKFae2nEcRcUrbv12csLUTiMZT3eHSdz\r\nhqw9wNXrr603WNQrbQOhhZe5HyxVPTs+8txxfCg4d9Tiy1nIMYfXWT5LCfah\r\nzhxZcj5bsTn2uGwy502FY0MNakwMXKQhowX5TAlY/8pKHdN3DD+0ODx4BHBX\r\nJjboikR8uIkmSbqwR0A/+W36ab+2532XR+56i+e+BEhM/uwLPYO9hNfvt4n8\r\n+jcbCNoLhFLaCZqhv4jhZNeBIz+1h+c3V4sAG7PKuo2xsb1DSWgX4pbmC77S\r\nE4GOnwHDhCZ267BWVFIVfsVE8Xr04DIzFVivZRbMfCmG7ccBqbd9paMpDBaX\r\nmBBzR5SWO2yzyWj1e0KBGTZy0m0GqaSvfV2WxLv3MUsSrhXG0/bNIYeTeUOs\r\ncLAjLPZkPYR1IiWudU58C/xNFkOexvhjvbbJM6tvb9S2N+Eseef2xysbYfjJ\r\nLl9bf1SgDDR1P/J6o/bF/L1xhPqPxAfYgb16h2xQ0SFRaph2P1fhQoqlnuoL\r\nc5ABzsOQvdmFn5iJJDLLB3s8Op5E7fE2FLk=\r\n=sdFv\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"smc-tenacious","email":"eggers.jens@gmail.com"},"directories":{},"maintainers":[{"name":"smc-tenacious","email":"eggers.jens@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/happn-db-provider-elasticsearch_1.0.9_1654251654144_0.33226081804307683"},"_hasShrinkwrap":false},"1.0.10-prerelease.1":{"name":"happn-db-provider-elasticsearch","version":"1.0.10-prerelease.1","private":false,"scripts":{"test":"_mocha --recursive --exit silence.js test/*","test-cover":"nyc --reporter=lcov --reporter=text --reporter=html npm test","test-unit":"mocha silence.js test/unit/* --recursive"},"dependencies":{"happn-commons":"^1.1.0","agentkeepalive":"^3.3.0","bluebird":"2.10.2","elasticsearch":"^13.2.0","extract-values":"^0.1.2","happn-logger":"^2.1.0","micromustache":"^5.2.0","redis-lru-cache":"^1.0.10-prerelease.1","traverse":"0.6.6"},"devDependencies":{"happn-commons-test":"^1.0.4","happn-3":"^13.1.2-prerelease.1","json-from-schema":"1.10.0"},"readme":"happner elastic dataprovider\n----------------------------\n*This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*\n\n### supports elastic <= 6.4.0\n\n### installing elasticsearch and redis on your local machine:\n```bash\n# elastic search - version is 5.1.1\ndocker pull docker.elastic.co/elasticsearch/elasticsearch:5.1.1\n\ndocker run -p 9200:9200 \\\n    -p 9300:9300 \\\n    -e \"xpack.security.enabled=false\" \\\n    docker.elastic.co/elasticsearch/elasticsearch:5.1.1\n\n# redis\ndocker pull redis\n\ndocker run -p 6379:6379 -d redis\n```\n\n### installation instructions:\n\n```bash\n#install deps\nnpm install happner-elastic-dataprovider\n#test run - most should pass\nmocha test/func\n\n#now run the historian data upload - this is demo code\nnode test/historian/server/start.js\n```\n\n#### Installing ElasticSearch and running ElasticSearch\n\n```bash\ncurl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.1-linux-x86_64.tar.gz\ntar -xvf elasticsearch-5.5.1-linux-x86_64.tar.gz \n./elasticsearch-5.5.1/bin/elasticsearch\n\n\n```\n### configuration:\n\n```javascript\n\n//single use config - everything goes into elasticsearch\nvar config = {\n  happn:{\n    services:{\n      data:{\n        config:{\n          datastores:[\n            {\n              name:'elastic',\n              provider:'happner-elastic-dataprovider',\n              settings:{\"host\":\"localhost:9200\"},\n              isDefault:true\n            }\n          ]\n        }\n      }\n    }\n  }\n};\n\n//dual config, send all items starting with the path /history/ to elastic search, all others go to the default nedb instance\nvar config = {\n  happn:{\n    services:{\n      data:{\n        config:{\n          datastores:[\n            {\n              name:'elastic',\n              provider:'happner-elastic-dataprovider',\n              settings:{\"host\":\"localhost:9200\"},\n              patterns:[\"/history/*\"]\n            },\n            {\n              name:'happn',\n              isDefault:true\n            }\n          ]\n        }\n      }\n    }\n  }\n};\n\n//then create happner instance as usual:\n\nvar Happner = require('happner');\n\nHappner.create(config)\n\n.then(function(mesh) {\n// got running mesh\n})\n\n.catch(function(error) {\nconsole.error(error.stack || error.toString())\nprocess.exit(1);\n});\n\n```\n\nHappner setup instructions in more detail [here](https://github.com/happner/happner/blob/master/docs/walkthrough/the-basics.md).\n\n## Supported Mongo Style Search Parameters \n\n* $eq\n* $gt\n* $gte\n* $in\n* $lt\n* $lte\n* $ne\n* $nin\n* $and\n* $not\n* $nor\n* $or\n* $exists\n* $regex\n\n### Limitations\n\n## sorting by a text field\n```javascript\n\nvar test_path = '/1_eventemitter_embedded_sanity/' +\n    test_id +\n    '/test subscribe/data/complex/' +\n    require('shortid').generate();\n\nvar complex_obj = {\n  regions: ['North', 'South'],\n  towns: ['North.Cape Town'],\n  categories: ['Action', 'History'],\n  subcategories: ['Action.angling', 'History.art'],\n  keywords: ['bass', 'Penny Siopis'],\n  field1: 'field1'\n};\n\nvar options1 = {\n  sort: {\n    'data.field1': 1 //unless you have set up the index mapping to make 'data.field1' a keyword, this search  will fail, see ./test/__fixtures/happn-config for a keyword mapping\n  },\n  limit: 1\n};\n\nawait publisherclient.set(test_path, complex_obj);\n\n// because we sorting by a text field this will be rejected, you can sort by dates and number type fields however\nconst results = await publisherclient.get(\n  '/1_eventemitter_embedded_sanity/' + test_id + '/test subscribe/data/complex/*',\n  {\n    criteria: criteria1,\n    options: options1\n  }\n);\n\n```\n\n#### Embedded documents \nEmbedded documents works slightly different than traditional mongo queries\nConsider the following document:\n\n\n`\n{\n size:{\n        h: 14, \n        w: 21, \n        uom: \"cm\" \n    }\n}\n`\n\nField order does not matter for this provider while they matter for regular mongo. Given the following query, mongo would not match while this provider will. \n\n`\n{\n size:{\n        w: 21, \n        h: 14, \n        uom: \"cm\" \n    }\n}\n`\n\nWhen a document is specified as an query mongo requires the document to be a precise match. This provider only requires the specified fields to match. The following query will match using this provider but won't match using mongo\n\n` {\n  size:{\n         w: 21, \n         h: 14 \n              }\n }`","readmeFilename":"readme.md","gitHead":"af38e5944f87a752814a9b009a543829860dfc64","description":"happner elastic dataprovider ---------------------------- *This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*","_id":"happn-db-provider-elasticsearch@1.0.10-prerelease.1","_nodeVersion":"16.13.1","_npmVersion":"8.5.4","dist":{"integrity":"sha512-EIFSGQITFVoiq6nuLXzWWfyds+Zzyg925mrW0cAqqgIGt95mwIN61tfKdL7m9wKxrgOpl/4msKDcImihQqhUnw==","shasum":"4d4bf06ded1288f33e184fb6bf3841197f263397","tarball":"https://registry.npmjs.org/happn-db-provider-elasticsearch/-/happn-db-provider-elasticsearch-1.0.10-prerelease.1.tgz","fileCount":8,"unpackedSize":43811,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDLFn3f6dgS+3cKB5x1It93sqBW2zJd3dZJFMmtdvVynQIgcTfgrjEghQkZ4HL/81hJwc5mS/RGIwGhcHtsZgsRPM4="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJineEwACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr13A/9FIfboe+q5Ck/ic6oadDrPB014/JfCDjavBVwW9G6grNg/fBu\r\nxXrZ2UcC0j6ZhskYghZSPzBTJFUerkKE0rPYRXmzExI0dIXuCU7eQvJ+yzAh\r\nJbkhryTucYoweZONtFted6RK27pI+4nJCq8gYNdaZxJ8VW9idLGqEhOeIkeQ\r\n6/Y6e3cM+6svxdQwA5MuZM9S/9CO/CjQk0TVjCw4hiNSjiQ05/hASrBJUxTs\r\nVuyB8D/Od1Uut1nWrkfZWcX5puw3nsLmkEE9Tbce5MX/Gy+9wpO7XfCKkc/s\r\n2XHAPVwaEVHl2KWWrB1Yw4LL1PBorRSCfLubiffyMIIqMHhQwbuHqtyVl+sq\r\nJwX2/4uS7k15NpTTO4861GnyedvOCxi5P5VeJqFbWYNVBNWxlXPemO7Y6hvY\r\nJxUv9aNL0tx42+FIin3imcJWr3m/GkHtfmEtXq0KQJbngC7b3A3VOv9G4dx4\r\n2Y2Stcyc/J7yMcWG3WqvPV/QTcCGggCpDiIDujGU2Lf1rPV5iimiTsedCiXM\r\nNIpV9CMl1UYX7dVCIfVjS5MPcK/2X0GAb9eMD8XldiOtQvW+Y5RFPkB6gzU6\r\nw8bFIzKUb+m74206Zr+yniCUH3fPuraj1RXSeSHq1NV0dqYOfi4ZqmZ6zFOx\r\nhQag+bTljpbxPNNf0kxbFmkv0PjS4JwaYbc=\r\n=iYS9\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"smc-tenacious","email":"eggers.jens@gmail.com"},"directories":{},"maintainers":[{"name":"smc-tenacious","email":"eggers.jens@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/happn-db-provider-elasticsearch_1.0.10-prerelease.1_1654513968570_0.01181639148857383"},"_hasShrinkwrap":false},"1.0.10-prerelease-1":{"name":"happn-db-provider-elasticsearch","version":"1.0.10-prerelease-1","private":false,"scripts":{"test":"_mocha --recursive --exit silence.js test/*","test-cover":"nyc --reporter=lcov --reporter=text --reporter=html npm test","test-unit":"mocha silence.js test/unit/* --recursive"},"dependencies":{"happn-commons":"^1.1.0","agentkeepalive":"^3.3.0","bluebird":"2.10.2","elasticsearch":"^13.2.0","extract-values":"^0.1.2","happn-logger":"^2.1.0","micromustache":"^5.2.0","redis-lru-cache":"^1.0.10-prerelease-1","traverse":"0.6.6"},"devDependencies":{"happn-commons-test":"^1.0.4","happn-3":"^13.1.2-prerelease-1","json-from-schema":"1.10.0"},"readme":"happner elastic dataprovider\n----------------------------\n*This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*\n\n### supports elastic <= 6.4.0\n\n### installing elasticsearch and redis on your local machine:\n```bash\n# elastic search - version is 5.1.1\ndocker pull docker.elastic.co/elasticsearch/elasticsearch:5.1.1\n\ndocker run -p 9200:9200 \\\n    -p 9300:9300 \\\n    -e \"xpack.security.enabled=false\" \\\n    docker.elastic.co/elasticsearch/elasticsearch:5.1.1\n\n# redis\ndocker pull redis\n\ndocker run -p 6379:6379 -d redis\n```\n\n### installation instructions:\n\n```bash\n#install deps\nnpm install happner-elastic-dataprovider\n#test run - most should pass\nmocha test/func\n\n#now run the historian data upload - this is demo code\nnode test/historian/server/start.js\n```\n\n#### Installing ElasticSearch and running ElasticSearch\n\n```bash\ncurl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.1-linux-x86_64.tar.gz\ntar -xvf elasticsearch-5.5.1-linux-x86_64.tar.gz \n./elasticsearch-5.5.1/bin/elasticsearch\n\n\n```\n### configuration:\n\n```javascript\n\n//single use config - everything goes into elasticsearch\nvar config = {\n  happn:{\n    services:{\n      data:{\n        config:{\n          datastores:[\n            {\n              name:'elastic',\n              provider:'happner-elastic-dataprovider',\n              settings:{\"host\":\"localhost:9200\"},\n              isDefault:true\n            }\n          ]\n        }\n      }\n    }\n  }\n};\n\n//dual config, send all items starting with the path /history/ to elastic search, all others go to the default nedb instance\nvar config = {\n  happn:{\n    services:{\n      data:{\n        config:{\n          datastores:[\n            {\n              name:'elastic',\n              provider:'happner-elastic-dataprovider',\n              settings:{\"host\":\"localhost:9200\"},\n              patterns:[\"/history/*\"]\n            },\n            {\n              name:'happn',\n              isDefault:true\n            }\n          ]\n        }\n      }\n    }\n  }\n};\n\n//then create happner instance as usual:\n\nvar Happner = require('happner');\n\nHappner.create(config)\n\n.then(function(mesh) {\n// got running mesh\n})\n\n.catch(function(error) {\nconsole.error(error.stack || error.toString())\nprocess.exit(1);\n});\n\n```\n\nHappner setup instructions in more detail [here](https://github.com/happner/happner/blob/master/docs/walkthrough/the-basics.md).\n\n## Supported Mongo Style Search Parameters \n\n* $eq\n* $gt\n* $gte\n* $in\n* $lt\n* $lte\n* $ne\n* $nin\n* $and\n* $not\n* $nor\n* $or\n* $exists\n* $regex\n\n### Limitations\n\n## sorting by a text field\n```javascript\n\nvar test_path = '/1_eventemitter_embedded_sanity/' +\n    test_id +\n    '/test subscribe/data/complex/' +\n    require('shortid').generate();\n\nvar complex_obj = {\n  regions: ['North', 'South'],\n  towns: ['North.Cape Town'],\n  categories: ['Action', 'History'],\n  subcategories: ['Action.angling', 'History.art'],\n  keywords: ['bass', 'Penny Siopis'],\n  field1: 'field1'\n};\n\nvar options1 = {\n  sort: {\n    'data.field1': 1 //unless you have set up the index mapping to make 'data.field1' a keyword, this search  will fail, see ./test/__fixtures/happn-config for a keyword mapping\n  },\n  limit: 1\n};\n\nawait publisherclient.set(test_path, complex_obj);\n\n// because we sorting by a text field this will be rejected, you can sort by dates and number type fields however\nconst results = await publisherclient.get(\n  '/1_eventemitter_embedded_sanity/' + test_id + '/test subscribe/data/complex/*',\n  {\n    criteria: criteria1,\n    options: options1\n  }\n);\n\n```\n\n#### Embedded documents \nEmbedded documents works slightly different than traditional mongo queries\nConsider the following document:\n\n\n`\n{\n size:{\n        h: 14, \n        w: 21, \n        uom: \"cm\" \n    }\n}\n`\n\nField order does not matter for this provider while they matter for regular mongo. Given the following query, mongo would not match while this provider will. \n\n`\n{\n size:{\n        w: 21, \n        h: 14, \n        uom: \"cm\" \n    }\n}\n`\n\nWhen a document is specified as an query mongo requires the document to be a precise match. This provider only requires the specified fields to match. The following query will match using this provider but won't match using mongo\n\n` {\n  size:{\n         w: 21, \n         h: 14 \n              }\n }`","readmeFilename":"readme.md","gitHead":"8e52556f50c2b9f33cd13681fde3d6baaf678c99","description":"happner elastic dataprovider ---------------------------- *This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*","_id":"happn-db-provider-elasticsearch@1.0.10-prerelease-1","_nodeVersion":"16.13.1","_npmVersion":"8.5.4","dist":{"integrity":"sha512-duiaQTorFedVd/GPlm3CB/+l8sNu9eefF7hHFWUtFNEP9FM3qdGemC90xdpRQ35eXbbWDRNFYzUkE7umXtcBAQ==","shasum":"9da0110698a70e0880e44520fc56326709f38f47","tarball":"https://registry.npmjs.org/happn-db-provider-elasticsearch/-/happn-db-provider-elasticsearch-1.0.10-prerelease-1.tgz","fileCount":8,"unpackedSize":43811,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBhVxboNa0ih51Y5iM/OUGHLT0N4Rdi2lFGk+XCRlKwOAiEAuwQ0iYkevQr6iCxx4W9zM1ELyhvm2+Plufdu5iWdWUQ="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJioesxACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrHig/8CRYzK7xRMtUpPdm12Y/+PjXJfpXokXoRRdkwAB+dLd2qYpkd\r\n0e3GcaqBWrZbDeU8CmK/NokbjBU7/IuWFkoHlMnUSbYMWRg5Uq4SvUgWV3+j\r\nHKsC0WKRQGe6X26yBcwjuYCCic8g7wQOZIavsYWYnMXtXkT75WuffQFT+cJv\r\nqwlzIfSpzP9vnNpILueMAiP5jUrSOM/hbLJHYAMFNIflieGoXVywq5Z4OLp+\r\nVi84IsBcryNI6tRFXM4eRkiq2VOVmxzCH4Y/VcirrHym446M7njeNg+Oqdme\r\nFToJf6I5C7gLnXdJX17eOo7JFnf5HCGHoGzVoD6emukydpwL1NaWh18kDDkb\r\n6HLZyuA9aTJYhENN3uPG/YTFQUQaUx8Kk9Nop8p8xacL9HUwo9qEWwGcpQ9N\r\nwjNueVStWvl+096d/Eg8XKzqlxOMMFAag6rq20rQcMBiBa8N9SQOtwDNh/SR\r\nDx1XwzloIdoXeORW+cIn7d/81TsHznm+MfyTXKQXrIiuATvl0tOqsKxMppLR\r\n69p41Q7oWM4yEb/LQErf08w9hNRwcZ2yX5Ra1d5pWGEbTU6ppj6ZiDR/TUoU\r\nTwtYhC3KHflueK9GSXcWcxZSKTmMwMosnfSir/9/sVxP0ozfvTiueTEvLV+W\r\nd3kE/NI7JAQrOUuqVZjpTd/OhDRnoeKZAlA=\r\n=bkk/\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"smc-tenacious","email":"eggers.jens@gmail.com"},"directories":{},"maintainers":[{"name":"smc-tenacious","email":"eggers.jens@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/happn-db-provider-elasticsearch_1.0.10-prerelease-1_1654778673138_0.14397364245789634"},"_hasShrinkwrap":false},"1.0.10":{"name":"happn-db-provider-elasticsearch","version":"1.0.10","private":false,"scripts":{"test":"_mocha --recursive --exit silence.js test/*","test-cover":"nyc --reporter=lcov --reporter=text --reporter=html npm test","test-unit":"mocha silence.js test/unit/* --recursive"},"dependencies":{"happn-commons":"^1.1.0","agentkeepalive":"^3.3.0","bluebird":"2.10.2","elasticsearch":"^13.2.0","extract-values":"^0.1.2","happn-logger":"^2.1.0","micromustache":"^5.2.0","redis-lru-cache":"^1.0.10","traverse":"0.6.6"},"devDependencies":{"happn-commons-test":"^1.0.4","happn-3":"^13.1.2","json-from-schema":"1.10.0"},"gitHead":"594022bbcae763e760b94f3009518c17d963e9ba","description":"happner elastic dataprovider ---------------------------- *This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*","_id":"happn-db-provider-elasticsearch@1.0.10","_nodeVersion":"16.13.1","_npmVersion":"8.5.4","dist":{"integrity":"sha512-8LERroiluDP0ceVNYtJOMY8dsQTTScH5GeOyM+Cik9N2w7KTjJ9vmZ7LzQyDMpRCOUfr7AQgJBvel5ywFEvTuw==","shasum":"9ec73a4e7a4d3ad4177f8721c944275c183331aa","tarball":"https://registry.npmjs.org/happn-db-provider-elasticsearch/-/happn-db-provider-elasticsearch-1.0.10.tgz","fileCount":8,"unpackedSize":43801,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFj6WzrgO4m4c5CDMyIIZrTOcxGq3Df6Gr/YdSgxTvD2AiBozYDkVqILlgAH2eFhY6GyFINtpXZSlUKl89aHV0KW0g=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiofoLACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr6uxAAliqqubh+sBqFYsEWbwiKphX/vOfPyejTzNHqODbF44diH/ei\r\nKSPwfT68XVmzcCMhkQ1OYRnnzv0t1o2zrlAWmsm74QbyfwmJc4cOTDwQEUOR\r\n6TxdYDC9OqHSWlEm/25JuRqiSUsTHqDVLR3yGSVSPN0gR1/kU7hVRA7J0juL\r\nQYRP2hnMmRk6wfnYC0BLLiP4m371fc3AMaGnO+epPGZuRzS66EHRPT5se7k8\r\nueiwTg87IvOm/H1tJNqv7aJF/4E8yMdy/wwMUhnGO1mejdAXnQ7xk2Ih4y+U\r\nbQl5K9UR+1vAxW5pIYfGc6QDgG5Ir42cHj6rUU8Nzo/7BqeIA4AcujRo4lSj\r\nPz4N/ZzC3H5b5sG/zqrOz5e4zK4UBnoFFP7XpjO/xHFbnsh9GBW3J2RfiiTo\r\nO6WIYjdpiwdvq9UaDmbALy9GxmMYWF0dO9TifsgT6l4N5JqugMpXuOgUAcPh\r\njWY2K8A7bPVb31LujBvcXa6uL1eMICQkup4hN82aE9Skzgwxke515cZlQ0qX\r\nlPrxDb806+igJK6iMqsG3hc+CwpkYEfMn6AY6Iaq+crYWGUYBe3YaqyRmFoe\r\nH1knfhFMGBC84hsqYLfh9tc4NNsNM+f+ZSGRay9Ryv5p8z1h/LbeejL5liZK\r\n9dBkOhb3hwpyLZl/0+oPDYP+0v/DHdeoe20=\r\n=+V/E\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"smc-tenacious","email":"eggers.jens@gmail.com"},"directories":{},"maintainers":[{"name":"smc-tenacious","email":"eggers.jens@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/happn-db-provider-elasticsearch_1.0.10_1654782475049_0.798629481006506"},"_hasShrinkwrap":false},"1.0.11-prerelease-1":{"name":"happn-db-provider-elasticsearch","version":"1.0.11-prerelease-1","private":false,"scripts":{"test":"_mocha --recursive --exit silence.js test/*","test-cover":"nyc --reporter=lcov --reporter=text --reporter=html npm test","test-unit":"mocha silence.js test/unit/* --recursive"},"dependencies":{"happn-commons":"^1.1.0","agentkeepalive":"^3.3.0","bluebird":"2.10.2","elasticsearch":"^13.2.0","extract-values":"^0.1.2","happn-logger":"^2.1.0","micromustache":"^5.2.0","redis-lru-cache":"^1.0.11-prerelease-1","traverse":"0.6.6"},"devDependencies":{"happn-commons-test":"^1.0.4","happn-3":"^13.1.3-prerelease-1","json-from-schema":"1.10.0"},"readme":"happner elastic dataprovider\n----------------------------\n*This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*\n\n### supports elastic <= 6.4.0\n\n### installing elasticsearch and redis on your local machine:\n```bash\n# elastic search - version is 5.1.1\ndocker pull docker.elastic.co/elasticsearch/elasticsearch:5.1.1\n\ndocker run -p 9200:9200 \\\n    -p 9300:9300 \\\n    -e \"xpack.security.enabled=false\" \\\n    docker.elastic.co/elasticsearch/elasticsearch:5.1.1\n\n# redis\ndocker pull redis\n\ndocker run -p 6379:6379 -d redis\n```\n\n### installation instructions:\n\n```bash\n#install deps\nnpm install happner-elastic-dataprovider\n#test run - most should pass\nmocha test/func\n\n#now run the historian data upload - this is demo code\nnode test/historian/server/start.js\n```\n\n#### Installing ElasticSearch and running ElasticSearch\n\n```bash\ncurl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.1-linux-x86_64.tar.gz\ntar -xvf elasticsearch-5.5.1-linux-x86_64.tar.gz \n./elasticsearch-5.5.1/bin/elasticsearch\n\n\n```\n### configuration:\n\n```javascript\n\n//single use config - everything goes into elasticsearch\nvar config = {\n  happn:{\n    services:{\n      data:{\n        config:{\n          datastores:[\n            {\n              name:'elastic',\n              provider:'happner-elastic-dataprovider',\n              settings:{\"host\":\"localhost:9200\"},\n              isDefault:true\n            }\n          ]\n        }\n      }\n    }\n  }\n};\n\n//dual config, send all items starting with the path /history/ to elastic search, all others go to the default nedb instance\nvar config = {\n  happn:{\n    services:{\n      data:{\n        config:{\n          datastores:[\n            {\n              name:'elastic',\n              provider:'happner-elastic-dataprovider',\n              settings:{\"host\":\"localhost:9200\"},\n              patterns:[\"/history/*\"]\n            },\n            {\n              name:'happn',\n              isDefault:true\n            }\n          ]\n        }\n      }\n    }\n  }\n};\n\n//then create happner instance as usual:\n\nvar Happner = require('happner');\n\nHappner.create(config)\n\n.then(function(mesh) {\n// got running mesh\n})\n\n.catch(function(error) {\nconsole.error(error.stack || error.toString())\nprocess.exit(1);\n});\n\n```\n\nHappner setup instructions in more detail [here](https://github.com/happner/happner/blob/master/docs/walkthrough/the-basics.md).\n\n## Supported Mongo Style Search Parameters \n\n* $eq\n* $gt\n* $gte\n* $in\n* $lt\n* $lte\n* $ne\n* $nin\n* $and\n* $not\n* $nor\n* $or\n* $exists\n* $regex\n\n### Limitations\n\n## sorting by a text field\n```javascript\n\nvar test_path = '/1_eventemitter_embedded_sanity/' +\n    test_id +\n    '/test subscribe/data/complex/' +\n    require('shortid').generate();\n\nvar complex_obj = {\n  regions: ['North', 'South'],\n  towns: ['North.Cape Town'],\n  categories: ['Action', 'History'],\n  subcategories: ['Action.angling', 'History.art'],\n  keywords: ['bass', 'Penny Siopis'],\n  field1: 'field1'\n};\n\nvar options1 = {\n  sort: {\n    'data.field1': 1 //unless you have set up the index mapping to make 'data.field1' a keyword, this search  will fail, see ./test/__fixtures/happn-config for a keyword mapping\n  },\n  limit: 1\n};\n\nawait publisherclient.set(test_path, complex_obj);\n\n// because we sorting by a text field this will be rejected, you can sort by dates and number type fields however\nconst results = await publisherclient.get(\n  '/1_eventemitter_embedded_sanity/' + test_id + '/test subscribe/data/complex/*',\n  {\n    criteria: criteria1,\n    options: options1\n  }\n);\n\n```\n\n#### Embedded documents \nEmbedded documents works slightly different than traditional mongo queries\nConsider the following document:\n\n\n`\n{\n size:{\n        h: 14, \n        w: 21, \n        uom: \"cm\" \n    }\n}\n`\n\nField order does not matter for this provider while they matter for regular mongo. Given the following query, mongo would not match while this provider will. \n\n`\n{\n size:{\n        w: 21, \n        h: 14, \n        uom: \"cm\" \n    }\n}\n`\n\nWhen a document is specified as an query mongo requires the document to be a precise match. This provider only requires the specified fields to match. The following query will match using this provider but won't match using mongo\n\n` {\n  size:{\n         w: 21, \n         h: 14 \n              }\n }`","readmeFilename":"readme.md","gitHead":"e4154b261a16ad41475d0b3bc7ae982e2c8aef97","description":"happner elastic dataprovider ---------------------------- *This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*","_id":"happn-db-provider-elasticsearch@1.0.11-prerelease-1","_nodeVersion":"16.13.1","_npmVersion":"8.5.4","dist":{"integrity":"sha512-ThK8OCxG3Xl78H913gVvmuPrmSuGDHcYsVVVgktNpvVpQy/GlQQp8gVGFvzscNeLsNS9HRQQmh+BAXQ+yRU8dQ==","shasum":"02d6e563183aff456a4e59a64f0322bc8426587f","tarball":"https://registry.npmjs.org/happn-db-provider-elasticsearch/-/happn-db-provider-elasticsearch-1.0.11-prerelease-1.tgz","fileCount":8,"unpackedSize":43948,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDYhpSJ80N7KNtXPPZQKGx4BswIWnPPvBLl7kp8jlKU2QIgYSlygnvHIk93SrEFdBe67rkeR7JifmdyJJBOzD9ZhI4="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJipwYdACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqEjw/+MAKBHhfAc9rX+xntGKl5vizoFzRmScAIa6AXBxj6kGz/xEl7\r\nvtAj2a3kQLt6D4tVhspOmbOqLmayacMJw1VXhLY4YO7DLtTZ1AvQpERrGgUl\r\nhC0Pnyq0zszHfi2fXrbXj8BcSDXosxUuZHWbq68qo5CNOmFK31S7CcfFELsp\r\nT/s5pvA+MdKban+LzQfcCVas/sl1udEVkUNNT72Tde7gPuK2YWaEwvhMtonF\r\nxGb9Ye8jNvdYupO3Zm2sECB59pXzCjahI+3iPg0zS56bge0/zzDIZvAOH7BT\r\nXE7D5g2tZbLsjQs5pcS+aXxSJKUHw78iLYSTszC6FlM7ZShR/PUu49x6Ny1X\r\nqbTnhH8V3b1Nju1SLNJ+u84N7VVepmMS9gaF8jTipimDk422DIZ7aE+jjqQ8\r\ntbzpJj23jApfYJql+Hi+ZkJRjk677uoWRIe6P6epHmQmEso59E/ldiwszZLi\r\nvpNGCyCEaZYd7K8kpEUSDBGJnd6K09CTDhK+zlwvl+Vi6mGRs/GIyUreGboh\r\nC5Er1o+cLH8Yesvf7WahGBrJzwQVDAAXM3zBTv2cEFNOZd0lQqhvH3+/PMZG\r\nllUFgJ+pg1SURePxBhXKYW1lFoDI+6IIGAUPjvgIUAb7PjCclpQYeH6HcD3d\r\n2lhZCw/AudVchUW843pMFWIfblHL5wQylcc=\r\n=Q+fF\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"smc-tenacious","email":"eggers.jens@gmail.com"},"directories":{},"maintainers":[{"name":"smc-tenacious","email":"eggers.jens@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/happn-db-provider-elasticsearch_1.0.11-prerelease-1_1655113244860_0.8399536197862862"},"_hasShrinkwrap":false},"1.0.11":{"name":"happn-db-provider-elasticsearch","version":"1.0.11","private":false,"scripts":{"test":"_mocha --recursive --exit silence.js test/*","test-cover":"nyc --reporter=lcov --reporter=text --reporter=html npm test","test-unit":"mocha silence.js test/unit/* --recursive"},"dependencies":{"happn-commons":"^1.1.0","agentkeepalive":"^3.3.0","bluebird":"2.10.2","elasticsearch":"^13.2.0","extract-values":"^0.1.2","happn-logger":"^2.1.0","micromustache":"^5.2.0","redis-lru-cache":"^1.0.11","traverse":"0.6.6"},"devDependencies":{"happn-commons-test":"^1.0.4","happn-3":"^13.1.3","json-from-schema":"1.10.0"},"gitHead":"fae9d3ed7389a07796e8e0439722e9a785d8c73b","description":"happner elastic dataprovider ---------------------------- *This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*","_id":"happn-db-provider-elasticsearch@1.0.11","_nodeVersion":"16.13.1","_npmVersion":"8.5.4","dist":{"integrity":"sha512-FN1cfdlfYnqZRx+dC1q4oDPXEZOxrUzhdsvAIm4QoONofMFBYehYlI2VR8ZHnvzjaPC5fo5VA4DKgg4hmd/a/g==","shasum":"be6ad7ae046db0a10182c5e4f2bdfce0d25620a0","tarball":"https://registry.npmjs.org/happn-db-provider-elasticsearch/-/happn-db-provider-elasticsearch-1.0.11.tgz","fileCount":8,"unpackedSize":43918,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDYz+ScHIAHOojoo+M2FKAZcyof6YfleKbNH+VrZP9pvAIhAIce70frgP1nxftFuyQoyW3sqaTp/WxLADT1CQeCpN3p"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiuvoqACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr7qhAAn2kTfdR4M+Tr0dwdL5Cabvtvk5QWh+ys04XEhcAM6yfMuU4f\r\ndmqCAHYnxSCIEAbafkQgjF7tjTPI7uKz+Py3EGc32x1mXLrP27uxONEFlukl\r\naIWb15QCXxCCi59JeYLYhu64Wjv6QINIR8aZktFnVHXqTmSUakCvJEIPUNkq\r\njaYUzhAIN4K6IAta7HKEeFQF5we8kwJNiB1fDvHjQmrhIDhfPWmxf4DWP3fY\r\nG8OB/NsL6Ij9rpPs6hddcCPTRRtUufYtQIVToOQW6HugVr6PbagDcdc1/vAY\r\njTHguGSWU+iF36fOcT203mdFiFAiAS65pua8zQbQ9HZFHyC2ghNd+qbyye1c\r\n//IW3ik3wOArtvQ8Nm6Gnt8UwNQwHGEvuuo1+S3s8N+N4cOAhHKRy8SZSK70\r\nCwxRuDrnQgP7QhwbjJr28qhU9aSOl3Oe4AFKiHuPYH50YeoMO2IenZMC4vzm\r\nHo5KQrB+3VVHmSdk4L4QQSHDm2qCJ7mdUaqDOqJGVtSZXUk+RtMQAn4Al3lw\r\nxcim6nmxZ2wU8tBBNauWZT3NhOUgdzqPNok3RxgyMFuy9XfUvGBpwC4UA9GS\r\nB/SpdVI2iyvgK/K4agpnCYoklB3LLwxQowby12HBPU8XJisdxoZx1eBZKe/6\r\n2nKvr1cRwc+EP9L7cRRqC891sWKUHzFcofQ=\r\n=JN2T\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"smc-tenacious","email":"eggers.jens@gmail.com"},"directories":{},"maintainers":[{"name":"smc-tenacious","email":"eggers.jens@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/happn-db-provider-elasticsearch_1.0.11_1656420906643_0.6743271891863836"},"_hasShrinkwrap":false},"1.0.12-prerelease-1":{"name":"happn-db-provider-elasticsearch","version":"1.0.12-prerelease-1","private":false,"scripts":{"test":"_mocha --recursive --exit silence.js test/*","test-cover":"nyc --reporter=lcov --reporter=text --reporter=html npm test","test-unit":"mocha silence.js test/unit/* --recursive"},"dependencies":{"happn-commons":"^1.1.0","agentkeepalive":"^3.3.0","bluebird":"2.10.2","elasticsearch":"^13.2.0","extract-values":"^0.1.2","happn-logger":"^2.1.0","micromustache":"^5.2.0","redis-lru-cache":"^1.0.12-prerelease-1","traverse":"0.6.6"},"devDependencies":{"happn-commons-test":"^1.0.4","happn-3":"^13.1.4-prerelease-1","json-from-schema":"1.10.0"},"readme":"happner elastic dataprovider\n----------------------------\n*This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*\n\n### supports elastic <= 6.4.0\n\n### installing elasticsearch and redis on your local machine:\n```bash\n# elastic search - version is 5.1.1\ndocker pull docker.elastic.co/elasticsearch/elasticsearch:5.1.1\n\ndocker run -p 9200:9200 \\\n    -p 9300:9300 \\\n    -e \"xpack.security.enabled=false\" \\\n    docker.elastic.co/elasticsearch/elasticsearch:5.1.1\n\n# redis\ndocker pull redis\n\ndocker run -p 6379:6379 -d redis\n```\n\n### installation instructions:\n\n```bash\n#install deps\nnpm install happner-elastic-dataprovider\n#test run - most should pass\nmocha test/func\n\n#now run the historian data upload - this is demo code\nnode test/historian/server/start.js\n```\n\n#### Installing ElasticSearch and running ElasticSearch\n\n```bash\ncurl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.1-linux-x86_64.tar.gz\ntar -xvf elasticsearch-5.5.1-linux-x86_64.tar.gz \n./elasticsearch-5.5.1/bin/elasticsearch\n\n\n```\n### configuration:\n\n```javascript\n\n//single use config - everything goes into elasticsearch\nvar config = {\n  happn:{\n    services:{\n      data:{\n        config:{\n          datastores:[\n            {\n              name:'elastic',\n              provider:'happner-elastic-dataprovider',\n              settings:{\"host\":\"localhost:9200\"},\n              isDefault:true\n            }\n          ]\n        }\n      }\n    }\n  }\n};\n\n//dual config, send all items starting with the path /history/ to elastic search, all others go to the default nedb instance\nvar config = {\n  happn:{\n    services:{\n      data:{\n        config:{\n          datastores:[\n            {\n              name:'elastic',\n              provider:'happner-elastic-dataprovider',\n              settings:{\"host\":\"localhost:9200\"},\n              patterns:[\"/history/*\"]\n            },\n            {\n              name:'happn',\n              isDefault:true\n            }\n          ]\n        }\n      }\n    }\n  }\n};\n\n//then create happner instance as usual:\n\nvar Happner = require('happner');\n\nHappner.create(config)\n\n.then(function(mesh) {\n// got running mesh\n})\n\n.catch(function(error) {\nconsole.error(error.stack || error.toString())\nprocess.exit(1);\n});\n\n```\n\nHappner setup instructions in more detail [here](https://github.com/happner/happner/blob/master/docs/walkthrough/the-basics.md).\n\n## Supported Mongo Style Search Parameters \n\n* $eq\n* $gt\n* $gte\n* $in\n* $lt\n* $lte\n* $ne\n* $nin\n* $and\n* $not\n* $nor\n* $or\n* $exists\n* $regex\n\n### Limitations\n\n## sorting by a text field\n```javascript\n\nvar test_path = '/1_eventemitter_embedded_sanity/' +\n    test_id +\n    '/test subscribe/data/complex/' +\n    require('shortid').generate();\n\nvar complex_obj = {\n  regions: ['North', 'South'],\n  towns: ['North.Cape Town'],\n  categories: ['Action', 'History'],\n  subcategories: ['Action.angling', 'History.art'],\n  keywords: ['bass', 'Penny Siopis'],\n  field1: 'field1'\n};\n\nvar options1 = {\n  sort: {\n    'data.field1': 1 //unless you have set up the index mapping to make 'data.field1' a keyword, this search  will fail, see ./test/__fixtures/happn-config for a keyword mapping\n  },\n  limit: 1\n};\n\nawait publisherclient.set(test_path, complex_obj);\n\n// because we sorting by a text field this will be rejected, you can sort by dates and number type fields however\nconst results = await publisherclient.get(\n  '/1_eventemitter_embedded_sanity/' + test_id + '/test subscribe/data/complex/*',\n  {\n    criteria: criteria1,\n    options: options1\n  }\n);\n\n```\n\n#### Embedded documents \nEmbedded documents works slightly different than traditional mongo queries\nConsider the following document:\n\n\n`\n{\n size:{\n        h: 14, \n        w: 21, \n        uom: \"cm\" \n    }\n}\n`\n\nField order does not matter for this provider while they matter for regular mongo. Given the following query, mongo would not match while this provider will. \n\n`\n{\n size:{\n        w: 21, \n        h: 14, \n        uom: \"cm\" \n    }\n}\n`\n\nWhen a document is specified as an query mongo requires the document to be a precise match. This provider only requires the specified fields to match. The following query will match using this provider but won't match using mongo\n\n` {\n  size:{\n         w: 21, \n         h: 14 \n              }\n }`","readmeFilename":"readme.md","gitHead":"96e5a5356fd71623c8e1f65f476d0cf9a67334d6","description":"happner elastic dataprovider ---------------------------- *This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*","_id":"happn-db-provider-elasticsearch@1.0.12-prerelease-1","_nodeVersion":"16.13.1","_npmVersion":"8.5.4","dist":{"integrity":"sha512-aYORqx0lXM3uDVdCOs2Oe8mRDsCl/AoeKK4tbHpIUqJn01XlmvXf2uj+dl+o8TNDKzat/iAbBbkIvtX6i9ASEw==","shasum":"54c36ae4fc4fd1282212f7f182c060b616aef578","tarball":"https://registry.npmjs.org/happn-db-provider-elasticsearch/-/happn-db-provider-elasticsearch-1.0.12-prerelease-1.tgz","fileCount":8,"unpackedSize":44031,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCDJpQRlw2tRMqnbZMRZK+Vgyfukd8047G2u3mDD8dVFgIhAJmAM82nuBLUiyQgR2mdND0R+gnNjd4qKABqWuldosX0"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiuwypACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrtnw/+Pxl2oyGF8sGXzZaglaNYzZ3yJTNDiYrW+5aunM2SFcf8aBDL\r\nc0vVp7lQ+vacfsVQHWRpO8xucOAXTceJohE05Xbi/RvKL+V4R77M96M0NGY0\r\n0U32ME9jIdBNto+zX/g1MXWydGkUxvIP2g1P1FEyJASNIV+W9Zhu8W1qee/M\r\nll2Pwrazs549GBq4KdnUsWFtHgOXx7JQeH8p9VplBICw2Rc0z7JQexBEqpKI\r\n3ktMDA4XdpcMtnniug3F4dAlGzmdx8knp45a00+w0lNxAspRgq3BQyG39nZF\r\nsSJIm0kSDJLGGb315Ixd/wbUGxN1f9VpU9vGsAYJQAPhZPMskmlOyjk8K5kr\r\nv87bHnbdgR1iPbhIdxWPDdscHimO3a9cteITsLZ0f0U0+WzNPAN1EvZAnJky\r\n3quaspSMO8vR6VMLpgMrhTKVFS3WayPGbwpdAqF6zuXBRhSvXq/qkOWtYeDs\r\nYawPxemdXSnoudCNR9eCKnAVytZe3xwhb6fMlXbA6TKCi1WbMZWGlx8Ht35V\r\nYCwB4wBtW04nnGf6ezLBd/2d2Eh0sWnvfRLh2FQ2bJWb4Tn4AkciNeg6B2E2\r\nIM34kjR5saBBfxF3XcPO0RLY9oc5kxivdXtd1X4fAjsTVIzBLaDaq+i0Qcxa\r\n+pBZCfqATH1l4plGGv22G5UJEjDqxT89VwA=\r\n=0mAN\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"smc-tenacious","email":"eggers.jens@gmail.com"},"directories":{},"maintainers":[{"name":"smc-tenacious","email":"eggers.jens@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/happn-db-provider-elasticsearch_1.0.12-prerelease-1_1656425641087_0.22940464358824153"},"_hasShrinkwrap":false},"1.0.12-prerelease-2":{"name":"happn-db-provider-elasticsearch","version":"1.0.12-prerelease-2","private":false,"scripts":{"test":"_mocha --recursive --exit silence.js test/*","test-cover":"nyc --reporter=lcov --reporter=text --reporter=html npm test","test-unit":"mocha silence.js test/unit/* --recursive"},"dependencies":{"happn-commons":"^1.1.0","agentkeepalive":"^3.3.0","bluebird":"2.10.2","elasticsearch":"^13.2.0","extract-values":"^0.1.2","happn-logger":"^2.1.1-prerelease-1","micromustache":"^5.2.0","redis-lru-cache":"^1.0.12-prerelease-2","traverse":"0.6.6"},"devDependencies":{"happn-commons-test":"^1.1.0-prerelease-1","happn-3":"^13.1.4-prerelease-1","json-from-schema":"1.10.0"},"readme":"happner elastic dataprovider\n----------------------------\n*This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*\n\n### supports elastic <= 6.4.0\n\n### installing elasticsearch and redis on your local machine:\n```bash\n# elastic search - version is 5.1.1\ndocker pull docker.elastic.co/elasticsearch/elasticsearch:5.1.1\n\ndocker run -p 9200:9200 \\\n    -p 9300:9300 \\\n    -e \"xpack.security.enabled=false\" \\\n    docker.elastic.co/elasticsearch/elasticsearch:5.1.1\n\n# redis\ndocker pull redis\n\ndocker run -p 6379:6379 -d redis\n```\n\n### installation instructions:\n\n```bash\n#install deps\nnpm install happner-elastic-dataprovider\n#test run - most should pass\nmocha test/func\n\n#now run the historian data upload - this is demo code\nnode test/historian/server/start.js\n```\n\n#### Installing ElasticSearch and running ElasticSearch\n\n```bash\ncurl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.1-linux-x86_64.tar.gz\ntar -xvf elasticsearch-5.5.1-linux-x86_64.tar.gz \n./elasticsearch-5.5.1/bin/elasticsearch\n\n\n```\n### configuration:\n\n```javascript\n\n//single use config - everything goes into elasticsearch\nvar config = {\n  happn:{\n    services:{\n      data:{\n        config:{\n          datastores:[\n            {\n              name:'elastic',\n              provider:'happner-elastic-dataprovider',\n              settings:{\"host\":\"localhost:9200\"},\n              isDefault:true\n            }\n          ]\n        }\n      }\n    }\n  }\n};\n\n//dual config, send all items starting with the path /history/ to elastic search, all others go to the default nedb instance\nvar config = {\n  happn:{\n    services:{\n      data:{\n        config:{\n          datastores:[\n            {\n              name:'elastic',\n              provider:'happner-elastic-dataprovider',\n              settings:{\"host\":\"localhost:9200\"},\n              patterns:[\"/history/*\"]\n            },\n            {\n              name:'happn',\n              isDefault:true\n            }\n          ]\n        }\n      }\n    }\n  }\n};\n\n//then create happner instance as usual:\n\nvar Happner = require('happner');\n\nHappner.create(config)\n\n.then(function(mesh) {\n// got running mesh\n})\n\n.catch(function(error) {\nconsole.error(error.stack || error.toString())\nprocess.exit(1);\n});\n\n```\n\nHappner setup instructions in more detail [here](https://github.com/happner/happner/blob/master/docs/walkthrough/the-basics.md).\n\n## Supported Mongo Style Search Parameters \n\n* $eq\n* $gt\n* $gte\n* $in\n* $lt\n* $lte\n* $ne\n* $nin\n* $and\n* $not\n* $nor\n* $or\n* $exists\n* $regex\n\n### Limitations\n\n## sorting by a text field\n```javascript\n\nvar test_path = '/1_eventemitter_embedded_sanity/' +\n    test_id +\n    '/test subscribe/data/complex/' +\n    require('shortid').generate();\n\nvar complex_obj = {\n  regions: ['North', 'South'],\n  towns: ['North.Cape Town'],\n  categories: ['Action', 'History'],\n  subcategories: ['Action.angling', 'History.art'],\n  keywords: ['bass', 'Penny Siopis'],\n  field1: 'field1'\n};\n\nvar options1 = {\n  sort: {\n    'data.field1': 1 //unless you have set up the index mapping to make 'data.field1' a keyword, this search  will fail, see ./test/__fixtures/happn-config for a keyword mapping\n  },\n  limit: 1\n};\n\nawait publisherclient.set(test_path, complex_obj);\n\n// because we sorting by a text field this will be rejected, you can sort by dates and number type fields however\nconst results = await publisherclient.get(\n  '/1_eventemitter_embedded_sanity/' + test_id + '/test subscribe/data/complex/*',\n  {\n    criteria: criteria1,\n    options: options1\n  }\n);\n\n```\n\n#### Embedded documents \nEmbedded documents works slightly different than traditional mongo queries\nConsider the following document:\n\n\n`\n{\n size:{\n        h: 14, \n        w: 21, \n        uom: \"cm\" \n    }\n}\n`\n\nField order does not matter for this provider while they matter for regular mongo. Given the following query, mongo would not match while this provider will. \n\n`\n{\n size:{\n        w: 21, \n        h: 14, \n        uom: \"cm\" \n    }\n}\n`\n\nWhen a document is specified as an query mongo requires the document to be a precise match. This provider only requires the specified fields to match. The following query will match using this provider but won't match using mongo\n\n` {\n  size:{\n         w: 21, \n         h: 14 \n              }\n }`","readmeFilename":"readme.md","gitHead":"e7dce20cd6a8eaf7c6efe07b28d5fc063775288d","description":"happner elastic dataprovider ---------------------------- *This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*","_id":"happn-db-provider-elasticsearch@1.0.12-prerelease-2","_nodeVersion":"16.13.1","_npmVersion":"8.5.4","dist":{"integrity":"sha512-owbFoILMkxU8BLSqdQr4vzu8Iv8HePxxjPzHZjJZxX7Mduw6QNaFk/FUKy36rPC9t+VGNU8RSihNcvp6tzVHGw==","shasum":"59459fd6bb79fd46fb73dc392e648035cf7ca9d8","tarball":"https://registry.npmjs.org/happn-db-provider-elasticsearch/-/happn-db-provider-elasticsearch-1.0.12-prerelease-2.tgz","fileCount":8,"unpackedSize":44070,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID9RGjzeoLftmtzFIDKMfVLzdpPoxyLgDo4XvfnUMimVAiEAkgT2TNK6CY1vUyU1UXx4DUHMXlEzOGsUOAM02VDJE2g="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi0AP2ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrhqQ/8C6tE3nHyUcY5ufsHnNwhmu4YzmHmfxHWhP0uXuNrFittMUBO\r\n5eA1BHVd3UoBQ21lRIp3EbdLLS7yteIpiAWTM02vTJoSLz/Gj73vwU1e2W9F\r\nlOvoWfLNcoMmk1l2Lb9xxHe+Z30rAlHsLvmgknOkzVjir239TZnXeaStC6p0\r\nm6vbG0SzNzcq1z59wakmJavFokwTw9EfmHNZVaqaABa/v6tdtAV+oqv6VyG8\r\nH21N8xr5ILtZJRXl+xOXlRnRdMNBVoyaYvHaW+ekFHr0tSQ3Fm3FQKCbd65X\r\nehM2Pst58yD49G2eG6az9aVoQ3AKJY7CEkpfNeLkm4JbQlohPtpgxtD7tOTs\r\nZq6MAlLxJiABL1NiebgMQdj89k8Bj7Gf1UqZx1DDPbKk36HZ8AUt1CzJmPgN\r\naOYxmj82594K8+tINaytEdgZltQRcGhpWwbiWOLbFPRiwJ1DJy+CbRrbsSY/\r\nwQN7xj9gBNG8Rn4qQuHFDdG15NgkSUH86wmCCslDgdvCgd8HIJOiRbQ7+5V+\r\nD891FVtqGC92OVaqcQDpEfuFCQtMeyWx4ll6nx2kD13EHMyt7bXeBN2o6BvA\r\nxLxv2s3FlvkoMd9w73lGYHsNJdYvzx9TPKYOuzYfV3tzxS+Sb76+HNN5P1dv\r\nPtf2A5qqgAKIcFj6gOwssqH6t9H9ht3kc54=\r\n=x3/a\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"smc-tenacious","email":"eggers.jens@gmail.com"},"directories":{},"maintainers":[{"name":"smc-tenacious","email":"eggers.jens@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/happn-db-provider-elasticsearch_1.0.12-prerelease-2_1657799670110_0.3785358141957187"},"_hasShrinkwrap":false},"1.0.12-prerelease-3":{"name":"happn-db-provider-elasticsearch","version":"1.0.12-prerelease-3","private":false,"scripts":{"test":"_mocha --recursive --exit silence.js test/*","test-cover":"nyc --reporter=lcov --reporter=text --reporter=html npm test","test-unit":"mocha silence.js test/unit/* --recursive"},"dependencies":{"happn-commons":"^1.1.0","agentkeepalive":"^3.3.0","bluebird":"2.10.2","elasticsearch":"^13.2.0","extract-values":"^0.1.2","happn-logger":"^2.1.1-prerelease-2","micromustache":"^5.2.0","redis-lru-cache":"^1.0.12-prerelease-3","traverse":"0.6.6"},"devDependencies":{"happn-commons-test":"^1.1.0-prerelease-2","happn-3":"^13.1.4-prerelease-2","json-from-schema":"1.10.0"},"readme":"happner elastic dataprovider\n----------------------------\n*This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*\n\n### supports elastic <= 6.4.0\n\n### installing elasticsearch and redis on your local machine:\n```bash\n# elastic search - version is 5.1.1\ndocker pull docker.elastic.co/elasticsearch/elasticsearch:5.1.1\n\ndocker run -p 9200:9200 \\\n    -p 9300:9300 \\\n    -e \"xpack.security.enabled=false\" \\\n    docker.elastic.co/elasticsearch/elasticsearch:5.1.1\n\n# redis\ndocker pull redis\n\ndocker run -p 6379:6379 -d redis\n```\n\n### installation instructions:\n\n```bash\n#install deps\nnpm install happner-elastic-dataprovider\n#test run - most should pass\nmocha test/func\n\n#now run the historian data upload - this is demo code\nnode test/historian/server/start.js\n```\n\n#### Installing ElasticSearch and running ElasticSearch\n\n```bash\ncurl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.1-linux-x86_64.tar.gz\ntar -xvf elasticsearch-5.5.1-linux-x86_64.tar.gz \n./elasticsearch-5.5.1/bin/elasticsearch\n\n\n```\n### configuration:\n\n```javascript\n\n//single use config - everything goes into elasticsearch\nvar config = {\n  happn:{\n    services:{\n      data:{\n        config:{\n          datastores:[\n            {\n              name:'elastic',\n              provider:'happner-elastic-dataprovider',\n              settings:{\"host\":\"localhost:9200\"},\n              isDefault:true\n            }\n          ]\n        }\n      }\n    }\n  }\n};\n\n//dual config, send all items starting with the path /history/ to elastic search, all others go to the default nedb instance\nvar config = {\n  happn:{\n    services:{\n      data:{\n        config:{\n          datastores:[\n            {\n              name:'elastic',\n              provider:'happner-elastic-dataprovider',\n              settings:{\"host\":\"localhost:9200\"},\n              patterns:[\"/history/*\"]\n            },\n            {\n              name:'happn',\n              isDefault:true\n            }\n          ]\n        }\n      }\n    }\n  }\n};\n\n//then create happner instance as usual:\n\nvar Happner = require('happner');\n\nHappner.create(config)\n\n.then(function(mesh) {\n// got running mesh\n})\n\n.catch(function(error) {\nconsole.error(error.stack || error.toString())\nprocess.exit(1);\n});\n\n```\n\nHappner setup instructions in more detail [here](https://github.com/happner/happner/blob/master/docs/walkthrough/the-basics.md).\n\n## Supported Mongo Style Search Parameters \n\n* $eq\n* $gt\n* $gte\n* $in\n* $lt\n* $lte\n* $ne\n* $nin\n* $and\n* $not\n* $nor\n* $or\n* $exists\n* $regex\n\n### Limitations\n\n## sorting by a text field\n```javascript\n\nvar test_path = '/1_eventemitter_embedded_sanity/' +\n    test_id +\n    '/test subscribe/data/complex/' +\n    require('shortid').generate();\n\nvar complex_obj = {\n  regions: ['North', 'South'],\n  towns: ['North.Cape Town'],\n  categories: ['Action', 'History'],\n  subcategories: ['Action.angling', 'History.art'],\n  keywords: ['bass', 'Penny Siopis'],\n  field1: 'field1'\n};\n\nvar options1 = {\n  sort: {\n    'data.field1': 1 //unless you have set up the index mapping to make 'data.field1' a keyword, this search  will fail, see ./test/__fixtures/happn-config for a keyword mapping\n  },\n  limit: 1\n};\n\nawait publisherclient.set(test_path, complex_obj);\n\n// because we sorting by a text field this will be rejected, you can sort by dates and number type fields however\nconst results = await publisherclient.get(\n  '/1_eventemitter_embedded_sanity/' + test_id + '/test subscribe/data/complex/*',\n  {\n    criteria: criteria1,\n    options: options1\n  }\n);\n\n```\n\n#### Embedded documents \nEmbedded documents works slightly different than traditional mongo queries\nConsider the following document:\n\n\n`\n{\n size:{\n        h: 14, \n        w: 21, \n        uom: \"cm\" \n    }\n}\n`\n\nField order does not matter for this provider while they matter for regular mongo. Given the following query, mongo would not match while this provider will. \n\n`\n{\n size:{\n        w: 21, \n        h: 14, \n        uom: \"cm\" \n    }\n}\n`\n\nWhen a document is specified as an query mongo requires the document to be a precise match. This provider only requires the specified fields to match. The following query will match using this provider but won't match using mongo\n\n` {\n  size:{\n         w: 21, \n         h: 14 \n              }\n }`","readmeFilename":"readme.md","gitHead":"fc3961fb73d4c2caaa5dddcde713073e377b665a","description":"happner elastic dataprovider ---------------------------- *This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*","_id":"happn-db-provider-elasticsearch@1.0.12-prerelease-3","_nodeVersion":"16.13.1","_npmVersion":"8.5.4","dist":{"integrity":"sha512-LA5J/ruWb/L1vHPd6QJ8TK+uanXtH1mvlpr46jXuFtQ8UsN5WKOnDQw0pGx2Na7KNrpM1+SvFR4v+spRFeCsXQ==","shasum":"c2ccc307cb359fd325f018461868fcee0832c481","tarball":"https://registry.npmjs.org/happn-db-provider-elasticsearch/-/happn-db-provider-elasticsearch-1.0.12-prerelease-3.tgz","fileCount":8,"unpackedSize":44070,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDoxANdpAg58zi8LieO4hre4zdOVv6v5+7gpOS298TmgAiBSROI+2ek3PBjS6SwX3xjswnxEyeJFlbvxbU7jKkYC+A=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi0B5qACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqQVw/+K3DeQfxQpntxA5ME9sPh2pjBkkwH0c+dx1GVl3skVmsOKfbd\r\nSk904vEVTry4bI3KPmH8D+8UabrN8aOI2MKdKSdJjzYvMgwH3YZeHKGhsVMd\r\neF9a/LmwlD8W4aVT9/PJuoktOY9wdml0PpUSjtQYs5KrIxBfq6X0U1ok+TpW\r\n5U6YZjmbuIUG3D0x1MZLjNOnSCjbTvWCi0LRDaXHVOHjPFkwyJMaMX0YOj2r\r\nBRKvjSXHaUXOCCdRuu02n9kvVQdV4e2n+07K2brWeaN/JkcLsEAQIueN279r\r\n/LngnbEXQlGirGYBJ6zdH83fzbGy6s0XFLTXIRlVG8h31sViT773ujKOfw/5\r\nU+mori3czPjIm4QQ0l7+g9U3/LY65WluysN/UnyawGVrFEld/wA8PFS0P1Gg\r\nvFADHJs7grjZWE9Ux6FblmZBWzrX/FfV59y+DyBA1gWxcvTYiP0LgqTwflm8\r\n5FXPHnilg96iEdBzOGBinQBayO/HJ2aC2xgBNwjpMQTcN7WyLduUIPFPrqsW\r\ntibbXyQg7+5UTi1yVh2jiGkqfGDiubbLYs3Lb126/1sbzjDkx+4I8i3FlddR\r\niubL7BmSsxum21lT+M0dz5rPLac7FoyhrxPhk2nOU03uUVThEaBrNCOmJpvY\r\nj8mgyWqa6dC/fJ6f8vps/hiMove+UNfb+bw=\r\n=ClmG\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"smc-tenacious","email":"eggers.jens@gmail.com"},"directories":{},"maintainers":[{"name":"smc-tenacious","email":"eggers.jens@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/happn-db-provider-elasticsearch_1.0.12-prerelease-3_1657806441980_0.8826692829786584"},"_hasShrinkwrap":false},"1.0.12":{"name":"happn-db-provider-elasticsearch","version":"1.0.12","private":false,"scripts":{"test":"_mocha --recursive --exit silence.js test/*","test-cover":"nyc --reporter=lcov --reporter=text --reporter=html npm test","test-unit":"mocha silence.js test/unit/* --recursive"},"dependencies":{"happn-commons":"^1.1.0","agentkeepalive":"^3.3.0","bluebird":"2.10.2","elasticsearch":"^13.2.0","extract-values":"^0.1.2","happn-logger":"^2.1.1","micromustache":"^5.2.0","redis-lru-cache":"^1.0.12","traverse":"0.6.6"},"devDependencies":{"happn-commons-test":"^1.1.0","happn-3":"^13.1.4","json-from-schema":"1.10.0"},"gitHead":"62047eaa0a0e687561a12e041ba27f2eef3a5123","description":"happner elastic dataprovider ---------------------------- *This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*","_id":"happn-db-provider-elasticsearch@1.0.12","_nodeVersion":"16.13.1","_npmVersion":"8.5.4","dist":{"integrity":"sha512-8VpNi+bw2oGdd3dIr0lvkQuAZEFOW921oKIkrFGQ1MDyQZVNPU1nDXAsRdXLGGFewAiccc4uuHRPjhNTI0UNDg==","shasum":"94ff913e0801810e2abb8e780f3ca6b0f41e46f8","tarball":"https://registry.npmjs.org/happn-db-provider-elasticsearch/-/happn-db-provider-elasticsearch-1.0.12.tgz","fileCount":8,"unpackedSize":44005,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF7gjuJu2DoBdjk6jQOTuClRG1AanBJnJ4djBGblNTEOAiEA46P87oZuzGwjwWMZnDLSrKatcp0Va9NNNIzUTSdMZRw="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi2QhiACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpHyRAAmH+pg2cZFKT+m5VHwD25hLf3XMeBF74+nq/8ysxWnCPTvDkn\r\nrwpI3g4qhroJiWLPm3xDuoxrceRWT2ofZSjk4GYMdJJqhAUQVzi/L2j1ozHK\r\n7y+nygpKTR+6aEXzKEwtjJHPvFMPLI0OgMWGDgg5G2Ug2Lj18bWzomEjSCHr\r\nPK25A2CY7fO9OJK0+uWcmgif1jy0LHMGpUz+IZaRyUwecC/WtC/2gXZ25tQt\r\n2mWBUelPKM7zUiFMbg5hidfdpOSAakm06LLJAdJFFAjkbi82yw/12soGquYW\r\nbfOfuEU53vvzGlf0WJCIRMf3nKioZ25shK3I47Z87cNWi1iyPavcbj/p/H1B\r\noEvzCP5qRssFWp+EKpSXYeDjZwyoU2vJtpqc5wbMgKfedEAeklwXLXU8+t2p\r\nPNW8tWFj0lNlG2FFoBtuYDE8gLJm2WCXAn0EKzkuOU8RNKfWk3LdvWZtwGr3\r\nve+b9fCXKusBCs9mk2TUdR5/aowSCRX3hn3DMTESA6hdgrbyizD6FgSMyGmg\r\n36SCXS14CyF5zr2rcnFeoca3uDmkWNh2m1FSsLBqIOoS0msM/kV+f9oPw9dn\r\nE/cnu2QSkPgvvmY26Y9NwjkFAbTjaDW9DfLbPRPTEqfpL33N9iZ0E8M3zVgY\r\nk+r2zWQlGYYwmqgvHj1eqpAxnLDEazrZCEI=\r\n=//6j\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"smc-tenacious","email":"eggers.jens@gmail.com"},"directories":{},"maintainers":[{"name":"smc-tenacious","email":"eggers.jens@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/happn-db-provider-elasticsearch_1.0.12_1658390626057_0.2915134541979061"},"_hasShrinkwrap":false},"1.0.13-prerelease-1":{"name":"happn-db-provider-elasticsearch","version":"1.0.13-prerelease-1","private":false,"scripts":{"test":"_mocha --recursive --exit silence.js test/*","test-cover":"nyc --reporter=lcov --reporter=text --reporter=html npm test","test-unit":"mocha silence.js test/unit/* --recursive"},"dependencies":{"happn-commons":"^1.1.0","agentkeepalive":"^3.3.0","bluebird":"2.10.2","elasticsearch":"^13.2.0","extract-values":"^0.1.2","happn-logger":"^2.1.1","micromustache":"^5.2.0","redis-lru-cache":"^1.0.13-prerelease-1","traverse":"0.6.6"},"devDependencies":{"happn-commons-test":"^1.1.0","happn-3":"^13.2.0-prerelease-1","json-from-schema":"1.10.0"},"readme":"happner elastic dataprovider\n----------------------------\n*This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*\n\n### supports elastic <= 6.4.0\n\n### installing elasticsearch and redis on your local machine:\n```bash\n# elastic search - version is 5.1.1\ndocker pull docker.elastic.co/elasticsearch/elasticsearch:5.1.1\n\ndocker run -p 9200:9200 \\\n    -p 9300:9300 \\\n    -e \"xpack.security.enabled=false\" \\\n    docker.elastic.co/elasticsearch/elasticsearch:5.1.1\n\n# redis\ndocker pull redis\n\ndocker run -p 6379:6379 -d redis\n```\n\n### installation instructions:\n\n```bash\n#install deps\nnpm install happner-elastic-dataprovider\n#test run - most should pass\nmocha test/func\n\n#now run the historian data upload - this is demo code\nnode test/historian/server/start.js\n```\n\n#### Installing ElasticSearch and running ElasticSearch\n\n```bash\ncurl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.1-linux-x86_64.tar.gz\ntar -xvf elasticsearch-5.5.1-linux-x86_64.tar.gz \n./elasticsearch-5.5.1/bin/elasticsearch\n\n\n```\n### configuration:\n\n```javascript\n\n//single use config - everything goes into elasticsearch\nvar config = {\n  happn:{\n    services:{\n      data:{\n        config:{\n          datastores:[\n            {\n              name:'elastic',\n              provider:'happner-elastic-dataprovider',\n              settings:{\"host\":\"localhost:9200\"},\n              isDefault:true\n            }\n          ]\n        }\n      }\n    }\n  }\n};\n\n//dual config, send all items starting with the path /history/ to elastic search, all others go to the default nedb instance\nvar config = {\n  happn:{\n    services:{\n      data:{\n        config:{\n          datastores:[\n            {\n              name:'elastic',\n              provider:'happner-elastic-dataprovider',\n              settings:{\"host\":\"localhost:9200\"},\n              patterns:[\"/history/*\"]\n            },\n            {\n              name:'happn',\n              isDefault:true\n            }\n          ]\n        }\n      }\n    }\n  }\n};\n\n//then create happner instance as usual:\n\nvar Happner = require('happner');\n\nHappner.create(config)\n\n.then(function(mesh) {\n// got running mesh\n})\n\n.catch(function(error) {\nconsole.error(error.stack || error.toString())\nprocess.exit(1);\n});\n\n```\n\nHappner setup instructions in more detail [here](https://github.com/happner/happner/blob/master/docs/walkthrough/the-basics.md).\n\n## Supported Mongo Style Search Parameters \n\n* $eq\n* $gt\n* $gte\n* $in\n* $lt\n* $lte\n* $ne\n* $nin\n* $and\n* $not\n* $nor\n* $or\n* $exists\n* $regex\n\n### Limitations\n\n## sorting by a text field\n```javascript\n\nvar test_path = '/1_eventemitter_embedded_sanity/' +\n    test_id +\n    '/test subscribe/data/complex/' +\n    require('shortid').generate();\n\nvar complex_obj = {\n  regions: ['North', 'South'],\n  towns: ['North.Cape Town'],\n  categories: ['Action', 'History'],\n  subcategories: ['Action.angling', 'History.art'],\n  keywords: ['bass', 'Penny Siopis'],\n  field1: 'field1'\n};\n\nvar options1 = {\n  sort: {\n    'data.field1': 1 //unless you have set up the index mapping to make 'data.field1' a keyword, this search  will fail, see ./test/__fixtures/happn-config for a keyword mapping\n  },\n  limit: 1\n};\n\nawait publisherclient.set(test_path, complex_obj);\n\n// because we sorting by a text field this will be rejected, you can sort by dates and number type fields however\nconst results = await publisherclient.get(\n  '/1_eventemitter_embedded_sanity/' + test_id + '/test subscribe/data/complex/*',\n  {\n    criteria: criteria1,\n    options: options1\n  }\n);\n\n```\n\n#### Embedded documents \nEmbedded documents works slightly different than traditional mongo queries\nConsider the following document:\n\n\n`\n{\n size:{\n        h: 14, \n        w: 21, \n        uom: \"cm\" \n    }\n}\n`\n\nField order does not matter for this provider while they matter for regular mongo. Given the following query, mongo would not match while this provider will. \n\n`\n{\n size:{\n        w: 21, \n        h: 14, \n        uom: \"cm\" \n    }\n}\n`\n\nWhen a document is specified as an query mongo requires the document to be a precise match. This provider only requires the specified fields to match. The following query will match using this provider but won't match using mongo\n\n` {\n  size:{\n         w: 21, \n         h: 14 \n              }\n }`","readmeFilename":"readme.md","gitHead":"2402a1da0f4ed87d24c5a9444377eddcdb5ef126","description":"happner elastic dataprovider ---------------------------- *This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*","_id":"happn-db-provider-elasticsearch@1.0.13-prerelease-1","_nodeVersion":"16.13.1","_npmVersion":"8.5.4","dist":{"integrity":"sha512-8R4uq/L2IFyMlL07/DPHTKgasZhiRljbfIPwRbR5YWX9KAsaYhxrWx85A/ot204z8wuTMJVQCtG5r5ghLeJh4g==","shasum":"c870cdcd67eb7ce3b582d5733e50b14ab4ff6db3","tarball":"https://registry.npmjs.org/happn-db-provider-elasticsearch/-/happn-db-provider-elasticsearch-1.0.13-prerelease-1.tgz","fileCount":8,"unpackedSize":44110,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHr/hQnetGyTvpNEiZ/MPmLT/x7aPlJwXOKxJhlTSbnQAiAowfP3XisD4UbPiIPfvcUOEUjE/4Yfy8FJ1mKh21adkg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi8BORACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrNlg//YlAORJ/IcQ0JvqG2OzHEqGoT9f9O+aydU4podMzawhs0RbT8\r\nsiOcQ0Shi37BOCxoaIP5NktvD54uDB7+gQeu5QtiEe4nN+tSpFhNlH9ZH7/X\r\nJBOM/GebEdw4Bwa0Kmf29xP86DzHrcVPe8nMyPewNrng18pBNocNvodV3GvV\r\nQdoXBSIu2wERmmcJQm33wX0HxpLWtiIjv8QWpEZlCV5bWqfk7o6+n2MkUc3i\r\nMElVJfJM1sgX9lDHYsNdv2SWPkJUdSdZ1cbNhMNaVunZuiYmkBkpB8CINHKc\r\n1V+l6ZJCAdylJUGVCxfTW2a/SEbPVd/lXOSx3GWztvI/KMtEO4GYu5zEKJOB\r\n89JB6Mwlg1foerayvkMJZ0p53ma4L9y8Oc5JKTWKCxTEP++hom0Ctt2SgPYF\r\nNWU+lm1+7kYkNPSYUHbd4iKX6o1SFQo5PpToL/iReK+5X5Y96ve+ebKPntt0\r\nvSMWT/pBgPrg4UmXy8C/eiekdY7ffZTwiUPsf9h2OMed4lgY8KkO5U1cX+nK\r\n3iAf1UYp7F7nm4RvQgqtvkK/aaT65NGwM+3OqzX6hg9w7hA4V9tffVSmY99h\r\ngtIG1RvE4alzYJFk51CVyxE2xhvKWgMIGySLHfwMrhlufglG5t3fQTMnEqGv\r\nXnJdA9/cCsYEVncsU2ECUoTcrMywdPb1VCc=\r\n=sJKL\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"smc-tenacious","email":"eggers.jens@gmail.com"},"directories":{},"maintainers":[{"name":"smc-tenacious","email":"eggers.jens@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/happn-db-provider-elasticsearch_1.0.13-prerelease-1_1659900816901_0.6099396160326676"},"_hasShrinkwrap":false},"1.0.13-prerelease-2":{"name":"happn-db-provider-elasticsearch","version":"1.0.13-prerelease-2","private":false,"scripts":{"test":"_mocha --recursive --exit silence.js test/*","test-cover":"nyc --reporter=lcov --reporter=text --reporter=html npm test","test-unit":"mocha silence.js test/unit/* --recursive"},"dependencies":{"happn-commons":"^1.1.0","agentkeepalive":"^3.3.0","bluebird":"2.10.2","elasticsearch":"^13.2.0","extract-values":"^0.1.2","happn-logger":"^2.1.1","micromustache":"^5.2.0","redis-lru-cache":"^1.0.13-prerelease-2","traverse":"0.6.6"},"devDependencies":{"happn-commons-test":"^1.1.0","happn-3":"^13.2.0-prerelease-2","json-from-schema":"1.10.0"},"readme":"happner elastic dataprovider\n----------------------------\n*This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*\n\n### supports elastic <= 6.4.0\n\n### installing elasticsearch and redis on your local machine:\n```bash\n# elastic search - version is 5.1.1\ndocker pull docker.elastic.co/elasticsearch/elasticsearch:5.1.1\n\ndocker run -p 9200:9200 \\\n    -p 9300:9300 \\\n    -e \"xpack.security.enabled=false\" \\\n    docker.elastic.co/elasticsearch/elasticsearch:5.1.1\n\n# redis\ndocker pull redis\n\ndocker run -p 6379:6379 -d redis\n```\n\n### installation instructions:\n\n```bash\n#install deps\nnpm install happner-elastic-dataprovider\n#test run - most should pass\nmocha test/func\n\n#now run the historian data upload - this is demo code\nnode test/historian/server/start.js\n```\n\n#### Installing ElasticSearch and running ElasticSearch\n\n```bash\ncurl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.1-linux-x86_64.tar.gz\ntar -xvf elasticsearch-5.5.1-linux-x86_64.tar.gz \n./elasticsearch-5.5.1/bin/elasticsearch\n\n\n```\n### configuration:\n\n```javascript\n\n//single use config - everything goes into elasticsearch\nvar config = {\n  happn:{\n    services:{\n      data:{\n        config:{\n          datastores:[\n            {\n              name:'elastic',\n              provider:'happner-elastic-dataprovider',\n              settings:{\"host\":\"localhost:9200\"},\n              isDefault:true\n            }\n          ]\n        }\n      }\n    }\n  }\n};\n\n//dual config, send all items starting with the path /history/ to elastic search, all others go to the default nedb instance\nvar config = {\n  happn:{\n    services:{\n      data:{\n        config:{\n          datastores:[\n            {\n              name:'elastic',\n              provider:'happner-elastic-dataprovider',\n              settings:{\"host\":\"localhost:9200\"},\n              patterns:[\"/history/*\"]\n            },\n            {\n              name:'happn',\n              isDefault:true\n            }\n          ]\n        }\n      }\n    }\n  }\n};\n\n//then create happner instance as usual:\n\nvar Happner = require('happner');\n\nHappner.create(config)\n\n.then(function(mesh) {\n// got running mesh\n})\n\n.catch(function(error) {\nconsole.error(error.stack || error.toString())\nprocess.exit(1);\n});\n\n```\n\nHappner setup instructions in more detail [here](https://github.com/happner/happner/blob/master/docs/walkthrough/the-basics.md).\n\n## Supported Mongo Style Search Parameters \n\n* $eq\n* $gt\n* $gte\n* $in\n* $lt\n* $lte\n* $ne\n* $nin\n* $and\n* $not\n* $nor\n* $or\n* $exists\n* $regex\n\n### Limitations\n\n## sorting by a text field\n```javascript\n\nvar test_path = '/1_eventemitter_embedded_sanity/' +\n    test_id +\n    '/test subscribe/data/complex/' +\n    require('shortid').generate();\n\nvar complex_obj = {\n  regions: ['North', 'South'],\n  towns: ['North.Cape Town'],\n  categories: ['Action', 'History'],\n  subcategories: ['Action.angling', 'History.art'],\n  keywords: ['bass', 'Penny Siopis'],\n  field1: 'field1'\n};\n\nvar options1 = {\n  sort: {\n    'data.field1': 1 //unless you have set up the index mapping to make 'data.field1' a keyword, this search  will fail, see ./test/__fixtures/happn-config for a keyword mapping\n  },\n  limit: 1\n};\n\nawait publisherclient.set(test_path, complex_obj);\n\n// because we sorting by a text field this will be rejected, you can sort by dates and number type fields however\nconst results = await publisherclient.get(\n  '/1_eventemitter_embedded_sanity/' + test_id + '/test subscribe/data/complex/*',\n  {\n    criteria: criteria1,\n    options: options1\n  }\n);\n\n```\n\n#### Embedded documents \nEmbedded documents works slightly different than traditional mongo queries\nConsider the following document:\n\n\n`\n{\n size:{\n        h: 14, \n        w: 21, \n        uom: \"cm\" \n    }\n}\n`\n\nField order does not matter for this provider while they matter for regular mongo. Given the following query, mongo would not match while this provider will. \n\n`\n{\n size:{\n        w: 21, \n        h: 14, \n        uom: \"cm\" \n    }\n}\n`\n\nWhen a document is specified as an query mongo requires the document to be a precise match. This provider only requires the specified fields to match. The following query will match using this provider but won't match using mongo\n\n` {\n  size:{\n         w: 21, \n         h: 14 \n              }\n }`","readmeFilename":"readme.md","gitHead":"e868b0506c3f9281fa7fc606b5d5fd2be15a9602","description":"happner elastic dataprovider ---------------------------- *This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*","_id":"happn-db-provider-elasticsearch@1.0.13-prerelease-2","_nodeVersion":"16.13.1","_npmVersion":"8.5.4","dist":{"integrity":"sha512-cPMcFoj57/7VkTgCbNe+bswWpSscOvpX+KwyLXDAS/9aNCTjm+Ev+ANixFaNGZd71vNLI974aRRX/TvV/x32SQ==","shasum":"c2f510524d4acac6440f4388d3e0c21356444bef","tarball":"https://registry.npmjs.org/happn-db-provider-elasticsearch/-/happn-db-provider-elasticsearch-1.0.13-prerelease-2.tgz","fileCount":8,"unpackedSize":44110,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDuae9igfsb58PfLorNICFGESrmagb1cRjzeczkoe10JQIhAKZt8pws+qgnpvfteChsvYMGc06i8547HJ3zaPBGLTOW"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi9Ox+ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrw7A//W07MOX0OVr2sR/0mJr+ZNshFGkUPXks1VR7Ne459I2LA0VFJ\r\nni6D4Fj5w/ayCMWqirJePUTlW89HftH8sFouJDs66iR9YTKiogUKeEGUQ9Wi\r\nAXO4jZ4vSRQJMOlsmfW/O6oJv6VMZMH8YI2Onkbrqk5kH7M/X0UTsMH1v8p8\r\nOy71WIxfXGWLKfoduHatz5s/o+epI884TWToRlvJcm5WXR+OKGGwmEAs8phU\r\n9YYBYNf441W36J1NTPuyIkAW155YddFTPDU3Zg4uSyXRttp0lDM9gMP/7nCG\r\np18IV6xureeqX7smfNvmtvA4DGpL4n4EE7Fz6TmhXrZrXj8eaVBGKboNihLb\r\njwAdXNeWs3CC54vMxC6tKbOdQFNnR0V1qbI4AddOjaTLZgV+yAp1hPKf8KdO\r\nkEQs+X/il6AM91peoxRrEKKt5yAiF5f61Z9/hXx6J+B49JyDLVcjL6Q1GKmE\r\nQ5GLLxDgN0QJ6sqsXii8QzSsm8SuI/tw30H6O8tmOMFSKPCh63fAI/3buxIT\r\neCZn1i+aQ//2AgcMa7C0CzjNqV0eUgTdJcSMDz9sl2HHeyo6CWY/pglHLu+V\r\nyqcBMkTWYthcgyUW8V2AX6XnpTcUncNe5SIshh1kQsZDdtrjgBsrgGDWbQ9j\r\nnypUwCG2k2zI1UNzJoQDQ8a52W/zKdIUTzA=\r\n=omFI\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"smc-tenacious","email":"eggers.jens@gmail.com"},"directories":{},"maintainers":[{"name":"smc-tenacious","email":"eggers.jens@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/happn-db-provider-elasticsearch_1.0.13-prerelease-2_1660218494410_0.4700540907165385"},"_hasShrinkwrap":false},"1.0.13-prerelease-3":{"name":"happn-db-provider-elasticsearch","version":"1.0.13-prerelease-3","private":false,"scripts":{"test":"_mocha --recursive --exit silence.js test/*","test-cover":"nyc --reporter=lcov --reporter=text --reporter=html npm test","test-unit":"mocha silence.js test/unit/* --recursive"},"dependencies":{"happn-commons":"^1.1.0","agentkeepalive":"^3.3.0","bluebird":"2.10.2","elasticsearch":"^13.2.0","extract-values":"^0.1.2","happn-logger":"^2.1.1","micromustache":"^5.2.0","redis-lru-cache":"^1.0.13-prerelease-3","traverse":"0.6.6"},"devDependencies":{"happn-commons-test":"^1.1.0","happn-3":"^13.2.0-prerelease-3","json-from-schema":"1.10.0"},"readme":"happner elastic dataprovider\n----------------------------\n*This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*\n\n### supports elastic <= 6.4.0\n\n### installing elasticsearch and redis on your local machine:\n```bash\n# elastic search - version is 5.1.1\ndocker pull docker.elastic.co/elasticsearch/elasticsearch:5.1.1\n\ndocker run -p 9200:9200 \\\n    -p 9300:9300 \\\n    -e \"xpack.security.enabled=false\" \\\n    docker.elastic.co/elasticsearch/elasticsearch:5.1.1\n\n# redis\ndocker pull redis\n\ndocker run -p 6379:6379 -d redis\n```\n\n### installation instructions:\n\n```bash\n#install deps\nnpm install happner-elastic-dataprovider\n#test run - most should pass\nmocha test/func\n\n#now run the historian data upload - this is demo code\nnode test/historian/server/start.js\n```\n\n#### Installing ElasticSearch and running ElasticSearch\n\n```bash\ncurl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.1-linux-x86_64.tar.gz\ntar -xvf elasticsearch-5.5.1-linux-x86_64.tar.gz \n./elasticsearch-5.5.1/bin/elasticsearch\n\n\n```\n### configuration:\n\n```javascript\n\n//single use config - everything goes into elasticsearch\nvar config = {\n  happn:{\n    services:{\n      data:{\n        config:{\n          datastores:[\n            {\n              name:'elastic',\n              provider:'happner-elastic-dataprovider',\n              settings:{\"host\":\"localhost:9200\"},\n              isDefault:true\n            }\n          ]\n        }\n      }\n    }\n  }\n};\n\n//dual config, send all items starting with the path /history/ to elastic search, all others go to the default nedb instance\nvar config = {\n  happn:{\n    services:{\n      data:{\n        config:{\n          datastores:[\n            {\n              name:'elastic',\n              provider:'happner-elastic-dataprovider',\n              settings:{\"host\":\"localhost:9200\"},\n              patterns:[\"/history/*\"]\n            },\n            {\n              name:'happn',\n              isDefault:true\n            }\n          ]\n        }\n      }\n    }\n  }\n};\n\n//then create happner instance as usual:\n\nvar Happner = require('happner');\n\nHappner.create(config)\n\n.then(function(mesh) {\n// got running mesh\n})\n\n.catch(function(error) {\nconsole.error(error.stack || error.toString())\nprocess.exit(1);\n});\n\n```\n\nHappner setup instructions in more detail [here](https://github.com/happner/happner/blob/master/docs/walkthrough/the-basics.md).\n\n## Supported Mongo Style Search Parameters \n\n* $eq\n* $gt\n* $gte\n* $in\n* $lt\n* $lte\n* $ne\n* $nin\n* $and\n* $not\n* $nor\n* $or\n* $exists\n* $regex\n\n### Limitations\n\n## sorting by a text field\n```javascript\n\nvar test_path = '/1_eventemitter_embedded_sanity/' +\n    test_id +\n    '/test subscribe/data/complex/' +\n    require('shortid').generate();\n\nvar complex_obj = {\n  regions: ['North', 'South'],\n  towns: ['North.Cape Town'],\n  categories: ['Action', 'History'],\n  subcategories: ['Action.angling', 'History.art'],\n  keywords: ['bass', 'Penny Siopis'],\n  field1: 'field1'\n};\n\nvar options1 = {\n  sort: {\n    'data.field1': 1 //unless you have set up the index mapping to make 'data.field1' a keyword, this search  will fail, see ./test/__fixtures/happn-config for a keyword mapping\n  },\n  limit: 1\n};\n\nawait publisherclient.set(test_path, complex_obj);\n\n// because we sorting by a text field this will be rejected, you can sort by dates and number type fields however\nconst results = await publisherclient.get(\n  '/1_eventemitter_embedded_sanity/' + test_id + '/test subscribe/data/complex/*',\n  {\n    criteria: criteria1,\n    options: options1\n  }\n);\n\n```\n\n#### Embedded documents \nEmbedded documents works slightly different than traditional mongo queries\nConsider the following document:\n\n\n`\n{\n size:{\n        h: 14, \n        w: 21, \n        uom: \"cm\" \n    }\n}\n`\n\nField order does not matter for this provider while they matter for regular mongo. Given the following query, mongo would not match while this provider will. \n\n`\n{\n size:{\n        w: 21, \n        h: 14, \n        uom: \"cm\" \n    }\n}\n`\n\nWhen a document is specified as an query mongo requires the document to be a precise match. This provider only requires the specified fields to match. The following query will match using this provider but won't match using mongo\n\n` {\n  size:{\n         w: 21, \n         h: 14 \n              }\n }`","readmeFilename":"readme.md","gitHead":"1185e108782d53bfc2539c5d8f57c2fe068b6ee5","description":"happner elastic dataprovider ---------------------------- *This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*","_id":"happn-db-provider-elasticsearch@1.0.13-prerelease-3","_nodeVersion":"16.13.1","_npmVersion":"8.5.4","dist":{"integrity":"sha512-7iKy2mx8wwnP+RLUarCC3RQAf7l3ujv4qyF9X49ezEU5GjsaaDYSnnCzTkCU+DbvK1Oz+J3yljyAnq3eUFgxjQ==","shasum":"6e3fb26b46eb6fa71baf7d09f43a6ab399b37d1a","tarball":"https://registry.npmjs.org/happn-db-provider-elasticsearch/-/happn-db-provider-elasticsearch-1.0.13-prerelease-3.tgz","fileCount":8,"unpackedSize":44110,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD+Do8UFti64X1PX87wy6+5gFm+rcXaY1SKDVamGcTqfQIhAJLkjCA9niXiPQ8GJnor8E6tOWWrQvQsCFRhMVkdhUmO"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi9oMfACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrFVQ//SC/A4BLmsdPMe5/R/9PlSlTcBU+ZhKZ5tjxKuD8z4tj0Mu+b\r\nZhxExJKXuqh/Uf8ymzs538S3PzgU8bw6ov7lsm6RScoeaNpyrJLT1I/seOIY\r\nw4sSLvf/cE71iPDSlbTe6pcJVayb+XjbeAbZMYgmealx0UmLFjffJKNiBJFq\r\ne8KNNNJ5kGRFXgjdginXUTCww96WnawB7myCf/mjAhFA5zYVaYtQMqRPLNcV\r\nWFOSx3QzfhMUIwr2eAvMaXiapgq2taPFSCm3xnk4BwqiF8KxUKWaoVjOdvy4\r\nvswdv8P9K0q8JEuWlTe0L9O68NNF9IwSN+bDpyb9fQWbhISZMHP9ihdAovlb\r\nGE/qcGmfax6la2Zqo7jV2r4CQ35K2dYz5HrH96mnXtY+PPV2AzuDobANXjqT\r\npo3qs9e3Qet9vs24DWjN5+iEdUbPa6Yq7Z3xfP/4hlMHvyqK5mYARTMpiXvm\r\n5R/owtNwDc9UB+6+YsKAEDGsXXZzwGcG9sZsPB45FEwDsfVWpNiar8RDKZIa\r\n/1IGG5+3Tat815ZzxoiH3/UPzxwRGz/kctgZ1SfGO2TE1fo1CxoKhVmC/ELn\r\n2/Bg/tVLl+zeeY91cSPUInV2BVqnVoiQVlRHLLIcAMFv5iDyDE92OyM5C2Nu\r\nU0Jce6RxDm62nndATYapjJw7ENQAykWB/7o=\r\n=dagQ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"smc-tenacious","email":"eggers.jens@gmail.com"},"directories":{},"maintainers":[{"name":"smc-tenacious","email":"eggers.jens@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/happn-db-provider-elasticsearch_1.0.13-prerelease-3_1660322590931_0.4797487502527882"},"_hasShrinkwrap":false},"1.0.13-prerelease-4":{"name":"happn-db-provider-elasticsearch","version":"1.0.13-prerelease-4","private":false,"scripts":{"test":"_mocha --recursive --exit silence.js test/*","test-cover":"nyc --reporter=lcov --reporter=text --reporter=html npm test","test-unit":"mocha silence.js test/unit/* --recursive"},"dependencies":{"happn-commons":"^1.1.0","agentkeepalive":"^3.3.0","bluebird":"2.10.2","elasticsearch":"^13.2.0","extract-values":"^0.1.2","happn-logger":"^2.1.1","micromustache":"^5.2.0","redis-lru-cache":"^1.0.13-prerelease-4","traverse":"0.6.6"},"devDependencies":{"happn-commons-test":"^1.1.0","happn-3":"^13.2.0-prerelease-4","json-from-schema":"1.10.0"},"readme":"happner elastic dataprovider\n----------------------------\n*This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*\n\n### supports elastic <= 6.4.0\n\n### installing elasticsearch and redis on your local machine:\n```bash\n# elastic search - version is 5.1.1\ndocker pull docker.elastic.co/elasticsearch/elasticsearch:5.1.1\n\ndocker run -p 9200:9200 \\\n    -p 9300:9300 \\\n    -e \"xpack.security.enabled=false\" \\\n    docker.elastic.co/elasticsearch/elasticsearch:5.1.1\n\n# redis\ndocker pull redis\n\ndocker run -p 6379:6379 -d redis\n```\n\n### installation instructions:\n\n```bash\n#install deps\nnpm install happner-elastic-dataprovider\n#test run - most should pass\nmocha test/func\n\n#now run the historian data upload - this is demo code\nnode test/historian/server/start.js\n```\n\n#### Installing ElasticSearch and running ElasticSearch\n\n```bash\ncurl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.1-linux-x86_64.tar.gz\ntar -xvf elasticsearch-5.5.1-linux-x86_64.tar.gz \n./elasticsearch-5.5.1/bin/elasticsearch\n\n\n```\n### configuration:\n\n```javascript\n\n//single use config - everything goes into elasticsearch\nvar config = {\n  happn:{\n    services:{\n      data:{\n        config:{\n          datastores:[\n            {\n              name:'elastic',\n              provider:'happner-elastic-dataprovider',\n              settings:{\"host\":\"localhost:9200\"},\n              isDefault:true\n            }\n          ]\n        }\n      }\n    }\n  }\n};\n\n//dual config, send all items starting with the path /history/ to elastic search, all others go to the default nedb instance\nvar config = {\n  happn:{\n    services:{\n      data:{\n        config:{\n          datastores:[\n            {\n              name:'elastic',\n              provider:'happner-elastic-dataprovider',\n              settings:{\"host\":\"localhost:9200\"},\n              patterns:[\"/history/*\"]\n            },\n            {\n              name:'happn',\n              isDefault:true\n            }\n          ]\n        }\n      }\n    }\n  }\n};\n\n//then create happner instance as usual:\n\nvar Happner = require('happner');\n\nHappner.create(config)\n\n.then(function(mesh) {\n// got running mesh\n})\n\n.catch(function(error) {\nconsole.error(error.stack || error.toString())\nprocess.exit(1);\n});\n\n```\n\nHappner setup instructions in more detail [here](https://github.com/happner/happner/blob/master/docs/walkthrough/the-basics.md).\n\n## Supported Mongo Style Search Parameters \n\n* $eq\n* $gt\n* $gte\n* $in\n* $lt\n* $lte\n* $ne\n* $nin\n* $and\n* $not\n* $nor\n* $or\n* $exists\n* $regex\n\n### Limitations\n\n## sorting by a text field\n```javascript\n\nvar test_path = '/1_eventemitter_embedded_sanity/' +\n    test_id +\n    '/test subscribe/data/complex/' +\n    require('shortid').generate();\n\nvar complex_obj = {\n  regions: ['North', 'South'],\n  towns: ['North.Cape Town'],\n  categories: ['Action', 'History'],\n  subcategories: ['Action.angling', 'History.art'],\n  keywords: ['bass', 'Penny Siopis'],\n  field1: 'field1'\n};\n\nvar options1 = {\n  sort: {\n    'data.field1': 1 //unless you have set up the index mapping to make 'data.field1' a keyword, this search  will fail, see ./test/__fixtures/happn-config for a keyword mapping\n  },\n  limit: 1\n};\n\nawait publisherclient.set(test_path, complex_obj);\n\n// because we sorting by a text field this will be rejected, you can sort by dates and number type fields however\nconst results = await publisherclient.get(\n  '/1_eventemitter_embedded_sanity/' + test_id + '/test subscribe/data/complex/*',\n  {\n    criteria: criteria1,\n    options: options1\n  }\n);\n\n```\n\n#### Embedded documents \nEmbedded documents works slightly different than traditional mongo queries\nConsider the following document:\n\n\n`\n{\n size:{\n        h: 14, \n        w: 21, \n        uom: \"cm\" \n    }\n}\n`\n\nField order does not matter for this provider while they matter for regular mongo. Given the following query, mongo would not match while this provider will. \n\n`\n{\n size:{\n        w: 21, \n        h: 14, \n        uom: \"cm\" \n    }\n}\n`\n\nWhen a document is specified as an query mongo requires the document to be a precise match. This provider only requires the specified fields to match. The following query will match using this provider but won't match using mongo\n\n` {\n  size:{\n         w: 21, \n         h: 14 \n              }\n }`","readmeFilename":"readme.md","gitHead":"d7a72cb7cabd3379e8e1e9d25c5fb338be32a147","description":"happner elastic dataprovider ---------------------------- *This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*","_id":"happn-db-provider-elasticsearch@1.0.13-prerelease-4","_nodeVersion":"16.13.1","_npmVersion":"8.5.4","dist":{"integrity":"sha512-cUG8UIbogGrIS7x7lkaoZg7fmvdRHamsvxmESGw7Y+ukce+grhdxjhWo6beq/4Uj4T4CrKGWTwFtHTKUAkwsOA==","shasum":"12ffc5e4c89a10dcb3cff285583a8d9ec8baf7d0","tarball":"https://registry.npmjs.org/happn-db-provider-elasticsearch/-/happn-db-provider-elasticsearch-1.0.13-prerelease-4.tgz","fileCount":8,"unpackedSize":44110,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHPa5cGJ4/B/ETJHeW0xnbiqmqwMVy91p6Dz6zDBKEGbAiEAlcKY/NMAPKMDKWi1ODy59rN5kwvLfCD7XnxnF0Flmag="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi/hl/ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr4vQ//VI4Urt07V57xrm7MuoNqCRyYCLred3Fn0aktzBweMJikapjG\r\nwWXeynwCvSv0B0bLTH/Acnue8drqITG7gWWtyRsr/eUycpep1D+HXuOEAZu3\r\nPlea6BYhUftjDCu7nlad3keohhfdya/TNlgZtxXFWCTjTrMAiMJEYq7H/3H6\r\nJyO93AOTKVCPucIaHieWUsHbuHzos8vnFE//F+Q58FFu2LS81V8Y3PwjpS1p\r\nSp1ZThuzdrp6N9+Mv5xy59WRGNvscXfnxmrcwD59IT/+n/tNB6p/qqJLcioX\r\nUl563AS4dWwjZ49xt4HieeJhI7Bk4J4AxqRyCD/9o+XhknkHf//DzCxnVCCG\r\n7YS+htf57nxCLxDROP5zrsfVyV51KXBqt6576A9Nwb/0myBK8VK8tRUIcAFL\r\nUek/VJGXuTMOH89g7HZeyO31PRHuHyiXw1BLo6/8pwoxxNcUeN9XSrUyDwIk\r\n6/q1SrXqqBcjF36/Jtu2mD6rftGnubA07e4f2Ckl/HikJYi5NFdTuhdMnh5w\r\ne9cB4obx5ZSx2crXHUHFKRbfkjnmlS6Ntft35bH8xBTTE0BX3t5c5qqSfv/t\r\n+xYB7xF3Q7sNNGVCVjcZIyIG3Oxvjlh9vWV05pHuYYrNDY9UWb20DrWXQ0Sw\r\nECPPlYp6Uw9EZhpsqEUxB4tIRz2sZmT9QvI=\r\n=019Y\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"smc-tenacious","email":"eggers.jens@gmail.com"},"directories":{},"maintainers":[{"name":"smc-tenacious","email":"eggers.jens@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/happn-db-provider-elasticsearch_1.0.13-prerelease-4_1660819839108_0.6806411720757399"},"_hasShrinkwrap":false},"1.0.13-prerelease-5":{"name":"happn-db-provider-elasticsearch","version":"1.0.13-prerelease-5","private":false,"scripts":{"test":"_mocha --recursive --exit silence.js test/*","test-cover":"nyc --reporter=lcov --reporter=text --reporter=html npm test","test-unit":"mocha silence.js test/unit/* --recursive"},"dependencies":{"happn-commons":"^1.1.0","agentkeepalive":"^3.3.0","bluebird":"2.10.2","elasticsearch":"^13.2.0","extract-values":"^0.1.2","happn-logger":"^2.1.1","micromustache":"^5.2.0","redis-lru-cache":"^1.0.13-prerelease-5","traverse":"0.6.6"},"devDependencies":{"happn-commons-test":"^1.1.0","happn-3":"^13.2.0-prerelease-5","json-from-schema":"1.10.0"},"readme":"happner elastic dataprovider\n----------------------------\n*This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*\n\n### supports elastic <= 6.4.0\n\n### installing elasticsearch and redis on your local machine:\n```bash\n# elastic search - version is 5.1.1\ndocker pull docker.elastic.co/elasticsearch/elasticsearch:5.1.1\n\ndocker run -p 9200:9200 \\\n    -p 9300:9300 \\\n    -e \"xpack.security.enabled=false\" \\\n    docker.elastic.co/elasticsearch/elasticsearch:5.1.1\n\n# redis\ndocker pull redis\n\ndocker run -p 6379:6379 -d redis\n```\n\n### installation instructions:\n\n```bash\n#install deps\nnpm install happner-elastic-dataprovider\n#test run - most should pass\nmocha test/func\n\n#now run the historian data upload - this is demo code\nnode test/historian/server/start.js\n```\n\n#### Installing ElasticSearch and running ElasticSearch\n\n```bash\ncurl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.1-linux-x86_64.tar.gz\ntar -xvf elasticsearch-5.5.1-linux-x86_64.tar.gz \n./elasticsearch-5.5.1/bin/elasticsearch\n\n\n```\n### configuration:\n\n```javascript\n\n//single use config - everything goes into elasticsearch\nvar config = {\n  happn:{\n    services:{\n      data:{\n        config:{\n          datastores:[\n            {\n              name:'elastic',\n              provider:'happner-elastic-dataprovider',\n              settings:{\"host\":\"localhost:9200\"},\n              isDefault:true\n            }\n          ]\n        }\n      }\n    }\n  }\n};\n\n//dual config, send all items starting with the path /history/ to elastic search, all others go to the default nedb instance\nvar config = {\n  happn:{\n    services:{\n      data:{\n        config:{\n          datastores:[\n            {\n              name:'elastic',\n              provider:'happner-elastic-dataprovider',\n              settings:{\"host\":\"localhost:9200\"},\n              patterns:[\"/history/*\"]\n            },\n            {\n              name:'happn',\n              isDefault:true\n            }\n          ]\n        }\n      }\n    }\n  }\n};\n\n//then create happner instance as usual:\n\nvar Happner = require('happner');\n\nHappner.create(config)\n\n.then(function(mesh) {\n// got running mesh\n})\n\n.catch(function(error) {\nconsole.error(error.stack || error.toString())\nprocess.exit(1);\n});\n\n```\n\nHappner setup instructions in more detail [here](https://github.com/happner/happner/blob/master/docs/walkthrough/the-basics.md).\n\n## Supported Mongo Style Search Parameters \n\n* $eq\n* $gt\n* $gte\n* $in\n* $lt\n* $lte\n* $ne\n* $nin\n* $and\n* $not\n* $nor\n* $or\n* $exists\n* $regex\n\n### Limitations\n\n## sorting by a text field\n```javascript\n\nvar test_path = '/1_eventemitter_embedded_sanity/' +\n    test_id +\n    '/test subscribe/data/complex/' +\n    require('shortid').generate();\n\nvar complex_obj = {\n  regions: ['North', 'South'],\n  towns: ['North.Cape Town'],\n  categories: ['Action', 'History'],\n  subcategories: ['Action.angling', 'History.art'],\n  keywords: ['bass', 'Penny Siopis'],\n  field1: 'field1'\n};\n\nvar options1 = {\n  sort: {\n    'data.field1': 1 //unless you have set up the index mapping to make 'data.field1' a keyword, this search  will fail, see ./test/__fixtures/happn-config for a keyword mapping\n  },\n  limit: 1\n};\n\nawait publisherclient.set(test_path, complex_obj);\n\n// because we sorting by a text field this will be rejected, you can sort by dates and number type fields however\nconst results = await publisherclient.get(\n  '/1_eventemitter_embedded_sanity/' + test_id + '/test subscribe/data/complex/*',\n  {\n    criteria: criteria1,\n    options: options1\n  }\n);\n\n```\n\n#### Embedded documents \nEmbedded documents works slightly different than traditional mongo queries\nConsider the following document:\n\n\n`\n{\n size:{\n        h: 14, \n        w: 21, \n        uom: \"cm\" \n    }\n}\n`\n\nField order does not matter for this provider while they matter for regular mongo. Given the following query, mongo would not match while this provider will. \n\n`\n{\n size:{\n        w: 21, \n        h: 14, \n        uom: \"cm\" \n    }\n}\n`\n\nWhen a document is specified as an query mongo requires the document to be a precise match. This provider only requires the specified fields to match. The following query will match using this provider but won't match using mongo\n\n` {\n  size:{\n         w: 21, \n         h: 14 \n              }\n }`","readmeFilename":"readme.md","gitHead":"d7a72cb7cabd3379e8e1e9d25c5fb338be32a147","description":"happner elastic dataprovider ---------------------------- *This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*","_id":"happn-db-provider-elasticsearch@1.0.13-prerelease-5","_nodeVersion":"16.13.1","_npmVersion":"8.5.4","dist":{"integrity":"sha512-8S3wCCw0mcnn+viP+TPsM3cGT1vhpt5UdJwXTgagRjDEJ3leEvqWdGeXGMxJ0xlfk58gfNywEKFOWJx4lWOyAQ==","shasum":"b41182a0e5b13a5b24e101be192f3dd01ec5856d","tarball":"https://registry.npmjs.org/happn-db-provider-elasticsearch/-/happn-db-provider-elasticsearch-1.0.13-prerelease-5.tgz","fileCount":8,"unpackedSize":44110,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEQdj2ZSM/fJiYtZ24eXV6Lyepj2Cy/S0bcLWqU8mwPjAiB3Qjg7X8eL5XDk0N9khVrmQ47iBR23tN2EhmhOk71C3g=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi/kBAACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo1BA//fhtmSzD1ykKC2f65gOc0OEUtAJGcljg4rdlKYvGHM1+JbvKa\r\nfE8rbyjv4dBN7e/V7AUw+B1Qpv2PVWzbgOQlOCqOA/IAdkJQe/9vSJlx42Uw\r\nrrxT4XnXT+wKO7/zyMkwifDXC/UUipWt11yDv6g1VfzD3etqSnON08Xb0wtH\r\nSo8MhI8oelyNxF2lve/OWpiQIsWnttpVEU9TCh38M33927SwGHzdyFvcyEWM\r\nFYXsC0vMMLUp8OH3x6yQApnOqzClzgi9LN5wfsac6rlJVCI0kChU1RzRDHtC\r\nI36jhhvcy3LtHnuKWAHWsH0zAnDaMFwZr8EAcXNsyWGLQhpLUBGLE6taS9+w\r\ntOyJPj8f+oUiRroCJxAy8nZ1F7NSjA1yZMmMNB/L+DixtF4Bvq3cP8csaZLP\r\nKczA3qU295zxJawYLe2D0h9fModGmkUkHVzL8eOGH+OvANbcIHnUN4e/WEs3\r\nCxDPutZb/Hh2qUzC/71kz0ox1bHqAQkudqqariVgNziyVXgRLUx279SvmV1P\r\npCjseT5+awcV3uhcudzeTvkrxXOHaASAYLD/LQu/B6npWgxS5Nel+mKuB/Wh\r\nBUW5V8ceTLkcIeh3MOS/Z3u+4qZUKZcobsXjkRrqbrS55kVomnRliyf6oexZ\r\njXCi1WJY88YIQE8UcvQ9Ex50CZaiBWUUgLM=\r\n=C1Ei\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"smc-tenacious","email":"eggers.jens@gmail.com"},"directories":{},"maintainers":[{"name":"smc-tenacious","email":"eggers.jens@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/happn-db-provider-elasticsearch_1.0.13-prerelease-5_1660829759949_0.12129379184101641"},"_hasShrinkwrap":false},"1.0.13-prerelease-6":{"name":"happn-db-provider-elasticsearch","version":"1.0.13-prerelease-6","private":false,"scripts":{"test":"_mocha --recursive --exit silence.js test/*","test-cover":"nyc --reporter=lcov --reporter=text --reporter=html npm test","test-unit":"mocha silence.js test/unit/* --recursive"},"dependencies":{"happn-commons":"^1.1.0","agentkeepalive":"^3.3.0","bluebird":"2.10.2","elasticsearch":"^13.2.0","extract-values":"^0.1.2","happn-logger":"^2.1.1","micromustache":"^5.2.0","redis-lru-cache":"^1.0.13-prerelease-6","traverse":"0.6.6"},"devDependencies":{"happn-commons-test":"^1.1.0","happn-3":"^13.2.0-prerelease-6","json-from-schema":"1.10.0"},"readme":"happner elastic dataprovider\n----------------------------\n*This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*\n\n### supports elastic <= 6.4.0\n\n### installing elasticsearch and redis on your local machine:\n```bash\n# elastic search - version is 5.1.1\ndocker pull docker.elastic.co/elasticsearch/elasticsearch:5.1.1\n\ndocker run -p 9200:9200 \\\n    -p 9300:9300 \\\n    -e \"xpack.security.enabled=false\" \\\n    docker.elastic.co/elasticsearch/elasticsearch:5.1.1\n\n# redis\ndocker pull redis\n\ndocker run -p 6379:6379 -d redis\n```\n\n### installation instructions:\n\n```bash\n#install deps\nnpm install happner-elastic-dataprovider\n#test run - most should pass\nmocha test/func\n\n#now run the historian data upload - this is demo code\nnode test/historian/server/start.js\n```\n\n#### Installing ElasticSearch and running ElasticSearch\n\n```bash\ncurl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.1-linux-x86_64.tar.gz\ntar -xvf elasticsearch-5.5.1-linux-x86_64.tar.gz \n./elasticsearch-5.5.1/bin/elasticsearch\n\n\n```\n### configuration:\n\n```javascript\n\n//single use config - everything goes into elasticsearch\nvar config = {\n  happn:{\n    services:{\n      data:{\n        config:{\n          datastores:[\n            {\n              name:'elastic',\n              provider:'happner-elastic-dataprovider',\n              settings:{\"host\":\"localhost:9200\"},\n              isDefault:true\n            }\n          ]\n        }\n      }\n    }\n  }\n};\n\n//dual config, send all items starting with the path /history/ to elastic search, all others go to the default nedb instance\nvar config = {\n  happn:{\n    services:{\n      data:{\n        config:{\n          datastores:[\n            {\n              name:'elastic',\n              provider:'happner-elastic-dataprovider',\n              settings:{\"host\":\"localhost:9200\"},\n              patterns:[\"/history/*\"]\n            },\n            {\n              name:'happn',\n              isDefault:true\n            }\n          ]\n        }\n      }\n    }\n  }\n};\n\n//then create happner instance as usual:\n\nvar Happner = require('happner');\n\nHappner.create(config)\n\n.then(function(mesh) {\n// got running mesh\n})\n\n.catch(function(error) {\nconsole.error(error.stack || error.toString())\nprocess.exit(1);\n});\n\n```\n\nHappner setup instructions in more detail [here](https://github.com/happner/happner/blob/master/docs/walkthrough/the-basics.md).\n\n## Supported Mongo Style Search Parameters \n\n* $eq\n* $gt\n* $gte\n* $in\n* $lt\n* $lte\n* $ne\n* $nin\n* $and\n* $not\n* $nor\n* $or\n* $exists\n* $regex\n\n### Limitations\n\n## sorting by a text field\n```javascript\n\nvar test_path = '/1_eventemitter_embedded_sanity/' +\n    test_id +\n    '/test subscribe/data/complex/' +\n    require('shortid').generate();\n\nvar complex_obj = {\n  regions: ['North', 'South'],\n  towns: ['North.Cape Town'],\n  categories: ['Action', 'History'],\n  subcategories: ['Action.angling', 'History.art'],\n  keywords: ['bass', 'Penny Siopis'],\n  field1: 'field1'\n};\n\nvar options1 = {\n  sort: {\n    'data.field1': 1 //unless you have set up the index mapping to make 'data.field1' a keyword, this search  will fail, see ./test/__fixtures/happn-config for a keyword mapping\n  },\n  limit: 1\n};\n\nawait publisherclient.set(test_path, complex_obj);\n\n// because we sorting by a text field this will be rejected, you can sort by dates and number type fields however\nconst results = await publisherclient.get(\n  '/1_eventemitter_embedded_sanity/' + test_id + '/test subscribe/data/complex/*',\n  {\n    criteria: criteria1,\n    options: options1\n  }\n);\n\n```\n\n#### Embedded documents \nEmbedded documents works slightly different than traditional mongo queries\nConsider the following document:\n\n\n`\n{\n size:{\n        h: 14, \n        w: 21, \n        uom: \"cm\" \n    }\n}\n`\n\nField order does not matter for this provider while they matter for regular mongo. Given the following query, mongo would not match while this provider will. \n\n`\n{\n size:{\n        w: 21, \n        h: 14, \n        uom: \"cm\" \n    }\n}\n`\n\nWhen a document is specified as an query mongo requires the document to be a precise match. This provider only requires the specified fields to match. The following query will match using this provider but won't match using mongo\n\n` {\n  size:{\n         w: 21, \n         h: 14 \n              }\n }`","readmeFilename":"readme.md","gitHead":"11247e371a812a496b981137e3c4ddaf2cc7446a","description":"happner elastic dataprovider ---------------------------- *This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*","_id":"happn-db-provider-elasticsearch@1.0.13-prerelease-6","_nodeVersion":"16.13.1","_npmVersion":"8.5.4","dist":{"integrity":"sha512-gLf1iZc9trCk6YoU1W+AtqMx6DMRaYVbSou4jkmU2YrS6kkFG1LeBj9rpKmGj9ISmUey54JKuyoGm+lzM1RIyQ==","shasum":"ee48d43bf0821d046f7cce73e9285729f67d96ba","tarball":"https://registry.npmjs.org/happn-db-provider-elasticsearch/-/happn-db-provider-elasticsearch-1.0.13-prerelease-6.tgz","fileCount":8,"unpackedSize":44110,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCknaCQcjj/8AQlZqeG5rBVXjo9WMYzBNE8LfBrGDDRzgIgDoKIACVsWYpeZ8p9xxga7l070jJUf391Ih1zEQ9b2c0="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjA2jXACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoPkxAAlV2FzeZHG4vilr/7nCRlpnAQW8eppdJS9Jp4nV3ei//6ui4l\r\nz2jQ+VwgTTn98iAS4TWI1RpFlQQXMmiOFX4+VLQRI95m2wIURBCPOa9s0GoL\r\nqJOPya2i8O3cvKVezp78ak0upPpy6uQbrcClonUpGgn6f6uPok93Mf1xAaSk\r\npSCJPnGEFmuO+jaGEedetSC4B2ftTQHHHJXnsPjdN5lkaDhqU2/5k7joDdZj\r\nRw1aI+xZEZWw3HYxDZicep7NpcJsHPY3lKkix1n+yoIkrwjwaWCUPuxYrAOM\r\nsxoledOfcp6vgISoUgliHonF0etd0w+/TOwZf733izl0tJj9GlSMo9BZeUlp\r\nPdDTL/343VsFvTZNYrCqIGk1Gh0hNUcixUgcOJ6Zyi6Rs6s+nBhcSU/gtv8m\r\nz+ELBISJzDB4v9uIqa/2cqPQhRqrc93nJg4YkALWih+xnPV4u2jrdZcIzeTo\r\n4z7u8as37tAk4Z+PItJ9CVEgtOW9s3Qr0V5UruDyPrFJAzQY1kk89YlhZlRf\r\nwoyahZ5vkvJLHGdiRk/eDf2nDoGiAVrLsN7kWp/bxQW0xeytzpndL8K6+8C6\r\ne4nDxOrGZSJAROwwBqP5zp5eRUbN1Ju7olnlmSiespe1F2j/NSj0cvy/9D0/\r\nQXydpe4ci7Xzqecu6iILZs1C/0JBA4l3IXE=\r\n=DHeS\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"smc-tenacious","email":"eggers.jens@gmail.com"},"directories":{},"maintainers":[{"name":"smc-tenacious","email":"eggers.jens@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/happn-db-provider-elasticsearch_1.0.13-prerelease-6_1661167831041_0.757279285032884"},"_hasShrinkwrap":false},"1.0.13-prerelease-7":{"name":"happn-db-provider-elasticsearch","version":"1.0.13-prerelease-7","private":false,"scripts":{"test":"_mocha --recursive --exit silence.js test/*","test-cover":"nyc --reporter=lcov --reporter=text --reporter=html npm test","test-unit":"mocha silence.js test/unit/* --recursive"},"dependencies":{"happn-commons":"^1.1.0","agentkeepalive":"^3.3.0","bluebird":"2.10.2","elasticsearch":"^13.2.0","extract-values":"^0.1.2","happn-logger":"^2.1.1","micromustache":"^5.2.0","redis-lru-cache":"^1.0.13-prerelease-7","traverse":"0.6.6"},"devDependencies":{"happn-commons-test":"^1.1.0","happn-3":"^13.2.0-prerelease-7","json-from-schema":"1.10.0"},"readme":"happner elastic dataprovider\n----------------------------\n*This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*\n\n### supports elastic <= 6.4.0\n\n### installing elasticsearch and redis on your local machine:\n```bash\n# elastic search - version is 5.1.1\ndocker pull docker.elastic.co/elasticsearch/elasticsearch:5.1.1\n\ndocker run -p 9200:9200 \\\n    -p 9300:9300 \\\n    -e \"xpack.security.enabled=false\" \\\n    docker.elastic.co/elasticsearch/elasticsearch:5.1.1\n\n# redis\ndocker pull redis\n\ndocker run -p 6379:6379 -d redis\n```\n\n### installation instructions:\n\n```bash\n#install deps\nnpm install happner-elastic-dataprovider\n#test run - most should pass\nmocha test/func\n\n#now run the historian data upload - this is demo code\nnode test/historian/server/start.js\n```\n\n#### Installing ElasticSearch and running ElasticSearch\n\n```bash\ncurl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.1-linux-x86_64.tar.gz\ntar -xvf elasticsearch-5.5.1-linux-x86_64.tar.gz \n./elasticsearch-5.5.1/bin/elasticsearch\n\n\n```\n### configuration:\n\n```javascript\n\n//single use config - everything goes into elasticsearch\nvar config = {\n  happn:{\n    services:{\n      data:{\n        config:{\n          datastores:[\n            {\n              name:'elastic',\n              provider:'happner-elastic-dataprovider',\n              settings:{\"host\":\"localhost:9200\"},\n              isDefault:true\n            }\n          ]\n        }\n      }\n    }\n  }\n};\n\n//dual config, send all items starting with the path /history/ to elastic search, all others go to the default nedb instance\nvar config = {\n  happn:{\n    services:{\n      data:{\n        config:{\n          datastores:[\n            {\n              name:'elastic',\n              provider:'happner-elastic-dataprovider',\n              settings:{\"host\":\"localhost:9200\"},\n              patterns:[\"/history/*\"]\n            },\n            {\n              name:'happn',\n              isDefault:true\n            }\n          ]\n        }\n      }\n    }\n  }\n};\n\n//then create happner instance as usual:\n\nvar Happner = require('happner');\n\nHappner.create(config)\n\n.then(function(mesh) {\n// got running mesh\n})\n\n.catch(function(error) {\nconsole.error(error.stack || error.toString())\nprocess.exit(1);\n});\n\n```\n\nHappner setup instructions in more detail [here](https://github.com/happner/happner/blob/master/docs/walkthrough/the-basics.md).\n\n## Supported Mongo Style Search Parameters \n\n* $eq\n* $gt\n* $gte\n* $in\n* $lt\n* $lte\n* $ne\n* $nin\n* $and\n* $not\n* $nor\n* $or\n* $exists\n* $regex\n\n### Limitations\n\n## sorting by a text field\n```javascript\n\nvar test_path = '/1_eventemitter_embedded_sanity/' +\n    test_id +\n    '/test subscribe/data/complex/' +\n    require('shortid').generate();\n\nvar complex_obj = {\n  regions: ['North', 'South'],\n  towns: ['North.Cape Town'],\n  categories: ['Action', 'History'],\n  subcategories: ['Action.angling', 'History.art'],\n  keywords: ['bass', 'Penny Siopis'],\n  field1: 'field1'\n};\n\nvar options1 = {\n  sort: {\n    'data.field1': 1 //unless you have set up the index mapping to make 'data.field1' a keyword, this search  will fail, see ./test/__fixtures/happn-config for a keyword mapping\n  },\n  limit: 1\n};\n\nawait publisherclient.set(test_path, complex_obj);\n\n// because we sorting by a text field this will be rejected, you can sort by dates and number type fields however\nconst results = await publisherclient.get(\n  '/1_eventemitter_embedded_sanity/' + test_id + '/test subscribe/data/complex/*',\n  {\n    criteria: criteria1,\n    options: options1\n  }\n);\n\n```\n\n#### Embedded documents \nEmbedded documents works slightly different than traditional mongo queries\nConsider the following document:\n\n\n`\n{\n size:{\n        h: 14, \n        w: 21, \n        uom: \"cm\" \n    }\n}\n`\n\nField order does not matter for this provider while they matter for regular mongo. Given the following query, mongo would not match while this provider will. \n\n`\n{\n size:{\n        w: 21, \n        h: 14, \n        uom: \"cm\" \n    }\n}\n`\n\nWhen a document is specified as an query mongo requires the document to be a precise match. This provider only requires the specified fields to match. The following query will match using this provider but won't match using mongo\n\n` {\n  size:{\n         w: 21, \n         h: 14 \n              }\n }`","readmeFilename":"readme.md","gitHead":"11247e371a812a496b981137e3c4ddaf2cc7446a","description":"happner elastic dataprovider ---------------------------- *This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*","_id":"happn-db-provider-elasticsearch@1.0.13-prerelease-7","_nodeVersion":"16.13.1","_npmVersion":"8.5.4","dist":{"integrity":"sha512-LGJlsatumURs/ooj6lzscgzw1XlBO815i3Q2IE6tqQtxh5PK6xVNE6RNEdKitcods7KDCPpGVAfz3+DXyzjQ9g==","shasum":"0b80a6e3e22c3df3e25c2003df3a79ca6499ac83","tarball":"https://registry.npmjs.org/happn-db-provider-elasticsearch/-/happn-db-provider-elasticsearch-1.0.13-prerelease-7.tgz","fileCount":8,"unpackedSize":44110,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF+G9t8EXhTKFP62NFWBNZKCTuF/LtoDARhjqFOQYDa8AiB5uXMrxPFplZ6a7qCUHC6M+0OItqiBmSJbElhKbVneQQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjBeM0ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpv7w/8C1l+45o6RhXRT5X0HncHPT/ZUmb681yxEWvoz9Li/T/Qk0ob\r\nPq7dvdP6TqYvtgKdq3vFtN2pmFvQtiISGfPRAGQwPRB5Pxk2uYPV5XKtEkUX\r\nMZLz7fwC1IOdNqn9Qql9u2qEl0sJ1V14ydhXvJqTCoGzyQbgLyY/sgYyZ9Az\r\n025Zi1/llu4vmWm/7OGvREM6EJDXSGGoU78cI7M0UQIbH/6V/6uS6/i5Y5Gk\r\nKK1uVDH4AqbQ0yAeynZowapgRvAWingeDAmWD7iaB/2uqVzY/MYR3HYM9HBh\r\nPH5kw/XgTyD2MTNX97N5EhVxKPyoe8X3F6/qP+/na64MgLcdJ7Ku/HKBQs7n\r\nrT7yu95C31C1ep0CNgvY77+myof16s21PrZIWGASG4SofqxIJkcjkxM6FnB0\r\n0DgvS8ON26SPSlmbaFi6/ewxct1+SaY4RkPdV1bcqXe+ETYpa4LnAK7DGPgF\r\nKdVfKL7ifzvanie2lYvms3WlEAQHU799oNJjOz1iOBtw2m7ICa0X4iv5nYML\r\n3SK1KG/LQWS+Fbz3fAoI6iikLZ4fRnju7M2viDVCxOXaWJTHpEa/5StNSz4H\r\nKmkE+3qVp+zU0UalKJxmu7izPDCRsYAL9d5ieqOKALHbEDBV4qgZiTu7Kitg\r\nx3sR8K20xbs6JAp4gBt+8Q9vp4kXtI8sh/I=\r\n=LtlB\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"simonbishopza","email":"simon.bishop.za@gmail.com"},"directories":{},"maintainers":[{"name":"smc-tenacious","email":"eggers.jens@gmail.com"},{"name":"simonbishopza","email":"simon.bishop.za@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/happn-db-provider-elasticsearch_1.0.13-prerelease-7_1661330227871_0.7653168253160085"},"_hasShrinkwrap":false},"1.0.13-prerelease-8":{"name":"happn-db-provider-elasticsearch","version":"1.0.13-prerelease-8","private":false,"scripts":{"test":"_mocha --recursive --exit silence.js test/*","test-cover":"nyc --reporter=lcov --reporter=text --reporter=html npm test","test-unit":"mocha silence.js test/unit/* --recursive"},"dependencies":{"happn-commons":"^1.1.0","agentkeepalive":"^3.3.0","bluebird":"2.10.2","elasticsearch":"^13.2.0","extract-values":"^0.1.2","happn-logger":"^2.1.1","micromustache":"^5.2.0","redis-lru-cache":"^1.0.13-prerelease-8","traverse":"0.6.6"},"devDependencies":{"happn-commons-test":"^1.1.0","happn-3":"^13.2.0-prerelease-8","json-from-schema":"1.10.0"},"readme":"happner elastic dataprovider\n----------------------------\n*This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*\n\n### supports elastic <= 6.4.0\n\n### installing elasticsearch and redis on your local machine:\n```bash\n# elastic search - version is 5.1.1\ndocker pull docker.elastic.co/elasticsearch/elasticsearch:5.1.1\n\ndocker run -p 9200:9200 \\\n    -p 9300:9300 \\\n    -e \"xpack.security.enabled=false\" \\\n    docker.elastic.co/elasticsearch/elasticsearch:5.1.1\n\n# redis\ndocker pull redis\n\ndocker run -p 6379:6379 -d redis\n```\n\n### installation instructions:\n\n```bash\n#install deps\nnpm install happner-elastic-dataprovider\n#test run - most should pass\nmocha test/func\n\n#now run the historian data upload - this is demo code\nnode test/historian/server/start.js\n```\n\n#### Installing ElasticSearch and running ElasticSearch\n\n```bash\ncurl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.1-linux-x86_64.tar.gz\ntar -xvf elasticsearch-5.5.1-linux-x86_64.tar.gz \n./elasticsearch-5.5.1/bin/elasticsearch\n\n\n```\n### configuration:\n\n```javascript\n\n//single use config - everything goes into elasticsearch\nvar config = {\n  happn:{\n    services:{\n      data:{\n        config:{\n          datastores:[\n            {\n              name:'elastic',\n              provider:'happner-elastic-dataprovider',\n              settings:{\"host\":\"localhost:9200\"},\n              isDefault:true\n            }\n          ]\n        }\n      }\n    }\n  }\n};\n\n//dual config, send all items starting with the path /history/ to elastic search, all others go to the default nedb instance\nvar config = {\n  happn:{\n    services:{\n      data:{\n        config:{\n          datastores:[\n            {\n              name:'elastic',\n              provider:'happner-elastic-dataprovider',\n              settings:{\"host\":\"localhost:9200\"},\n              patterns:[\"/history/*\"]\n            },\n            {\n              name:'happn',\n              isDefault:true\n            }\n          ]\n        }\n      }\n    }\n  }\n};\n\n//then create happner instance as usual:\n\nvar Happner = require('happner');\n\nHappner.create(config)\n\n.then(function(mesh) {\n// got running mesh\n})\n\n.catch(function(error) {\nconsole.error(error.stack || error.toString())\nprocess.exit(1);\n});\n\n```\n\nHappner setup instructions in more detail [here](https://github.com/happner/happner/blob/master/docs/walkthrough/the-basics.md).\n\n## Supported Mongo Style Search Parameters \n\n* $eq\n* $gt\n* $gte\n* $in\n* $lt\n* $lte\n* $ne\n* $nin\n* $and\n* $not\n* $nor\n* $or\n* $exists\n* $regex\n\n### Limitations\n\n## sorting by a text field\n```javascript\n\nvar test_path = '/1_eventemitter_embedded_sanity/' +\n    test_id +\n    '/test subscribe/data/complex/' +\n    require('shortid').generate();\n\nvar complex_obj = {\n  regions: ['North', 'South'],\n  towns: ['North.Cape Town'],\n  categories: ['Action', 'History'],\n  subcategories: ['Action.angling', 'History.art'],\n  keywords: ['bass', 'Penny Siopis'],\n  field1: 'field1'\n};\n\nvar options1 = {\n  sort: {\n    'data.field1': 1 //unless you have set up the index mapping to make 'data.field1' a keyword, this search  will fail, see ./test/__fixtures/happn-config for a keyword mapping\n  },\n  limit: 1\n};\n\nawait publisherclient.set(test_path, complex_obj);\n\n// because we sorting by a text field this will be rejected, you can sort by dates and number type fields however\nconst results = await publisherclient.get(\n  '/1_eventemitter_embedded_sanity/' + test_id + '/test subscribe/data/complex/*',\n  {\n    criteria: criteria1,\n    options: options1\n  }\n);\n\n```\n\n#### Embedded documents \nEmbedded documents works slightly different than traditional mongo queries\nConsider the following document:\n\n\n`\n{\n size:{\n        h: 14, \n        w: 21, \n        uom: \"cm\" \n    }\n}\n`\n\nField order does not matter for this provider while they matter for regular mongo. Given the following query, mongo would not match while this provider will. \n\n`\n{\n size:{\n        w: 21, \n        h: 14, \n        uom: \"cm\" \n    }\n}\n`\n\nWhen a document is specified as an query mongo requires the document to be a precise match. This provider only requires the specified fields to match. The following query will match using this provider but won't match using mongo\n\n` {\n  size:{\n         w: 21, \n         h: 14 \n              }\n }`","readmeFilename":"readme.md","gitHead":"ab1bc55cb0590898c90cb58b777393d913baac39","description":"happner elastic dataprovider ---------------------------- *This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*","_id":"happn-db-provider-elasticsearch@1.0.13-prerelease-8","_nodeVersion":"16.13.1","_npmVersion":"8.5.4","dist":{"integrity":"sha512-HFi+IRN53B+8501sgy86phDh6Cg7t2N+VisA/7x1C8Qm6IKR/tkeQSaoguvbV2er3udOSSyCo2LemIi0RhEvgA==","shasum":"9924b39100ba4350cfd549de7c83440ecbda1634","tarball":"https://registry.npmjs.org/happn-db-provider-elasticsearch/-/happn-db-provider-elasticsearch-1.0.13-prerelease-8.tgz","fileCount":8,"unpackedSize":44110,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCkn7EXXkJ8HXtryOR/0gcmyCnTkSsGQcz9++jxDYzKhgIgFPhT1eVqFvH0kTRU0lUZ8WJDQnRqFozkOisI4BUYXrE="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjBzfiACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr4tA/+Ll7pIRKQ1/hYG2nl2INaa2xMyLTjZiGkySZikYxXM+GF40q4\r\nrV1gusAU9LQH/GQdzLVMBa3SKYvb4nqYqxTyO64/8SUniiVdp13ltB5zQlPS\r\nCmdUaQzuKTtSz02djMbThMyhqCXbMftiGizTkiH4i+nSMr9l0Wv/vn4LdmzT\r\nsrp4LaGlXdVk4jMvy/cUY8arKALOjkemsLoIPEnmY9yFgbQzGYlbpGc4mCjr\r\nNrxAutSVW9bdF6fV+s79+YrPYvMj92W7YgZasit8NmaErwoxix8kMl0nSihE\r\nG+6+sIb89F1d9NcA2beiudG/RcMC8d/iZjhKw0yL01HE5eSgMztouJHYJFnt\r\nUtOXQVr1kEpb3MIRJq5sS0jvS1QAodcE5Qa6W9BjsN8oFrY6z3oOtg/6Qq/R\r\ns0IFoGltDHWd838m1wrPZUq/vUlmZbA8NaGCKwX8dweLIiltvkmBW6T304G7\r\nu8ayrKmnuphS4OCOoNewhRBkF2Ge6N2zg8SJGNGz7H1EAzG4k9StlRX85xl3\r\nCiolO1q1oeJIkaXjq6m0RAeOqwSE6ivyuIX2rrnu/hOT0DJRKNfWhrDUwRn+\r\nIAv56bD0eV0XwLQewT8YhQ+6V/VEWprIr+0tYACCk32Wc96debhFH/6URQEE\r\nz0DppvymYNBK0L7FgWcrPKphY7meu6R/S/A=\r\n=7cS4\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"simonbishopza","email":"simon.bishop.za@gmail.com"},"directories":{},"maintainers":[{"name":"smc-tenacious","email":"eggers.jens@gmail.com"},{"name":"simonbishopza","email":"simon.bishop.za@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/happn-db-provider-elasticsearch_1.0.13-prerelease-8_1661417441867_0.053584990272598665"},"_hasShrinkwrap":false},"1.0.13":{"name":"happn-db-provider-elasticsearch","version":"1.0.13","private":false,"scripts":{"test":"_mocha --recursive --exit silence.js test/*","test-cover":"nyc --reporter=lcov --reporter=text --reporter=html npm test","test-unit":"mocha silence.js test/unit/* --recursive"},"dependencies":{"happn-commons":"^1.1.0","agentkeepalive":"^3.3.0","bluebird":"2.10.2","elasticsearch":"^13.2.0","extract-values":"^0.1.2","happn-logger":"^2.1.1","micromustache":"^5.2.0","redis-lru-cache":"^1.0.13","traverse":"0.6.6"},"devDependencies":{"happn-commons-test":"^1.1.0","happn-3":"^13.2.0","json-from-schema":"1.10.0"},"gitHead":"2651589855e607951afcc9594a16030173bc8265","description":"happner elastic dataprovider ---------------------------- *This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*","_id":"happn-db-provider-elasticsearch@1.0.13","_nodeVersion":"16.13.1","_npmVersion":"8.5.4","dist":{"integrity":"sha512-j/3Nnxk1gvGJ09ZFRwAN3ZZqq1uaKcR2WI4Xb2KLZO453qzO+/cU5PJDnyJWwwTNQ60n4PcTSyfQhShPelQ5JQ==","shasum":"d82071d0b2de08bebab4e21a0dc7d01ff84b6c28","tarball":"https://registry.npmjs.org/happn-db-provider-elasticsearch/-/happn-db-provider-elasticsearch-1.0.13.tgz","fileCount":8,"unpackedSize":44071,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB5ZP9meGRZt2iX5j8gUmq+AwoF1wFXEJlPf/oDfWW67AiEApiOzFzMJSeNzvEvaC6GQZVoYJz0hF7IP3vs5emdzCNo="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjDdpqACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr5AA//QO+PtmbCo98OlEsU42Uux4bRUg8lOSAnG7wklYYdXUXIiDaa\r\n1GRVdluPow/aNI5VUlP1QAHJASchfxev92V/1ZVxUj0dFvCW+EBDklYzoEIB\r\nRtS27uJUWfDOAoLzLeJjuzoAkon5VnPnNFLf55brR8LrgLsbAI4joT3Mvl5i\r\nz8D2hjykA/WHICb++iVsMrnAl0sBViuj09VIf/LCClpdrhh6QZhRJUlXXQxL\r\nUz9CTmQxI8rwiAKKds5bTfco2a+td0VPNlqHSd9alae1M7j2KIROIDMQHJKp\r\nMAiRW+QK4hhQsRDvEgppDyVttSHPuRDL4M5ZS6W7MjkT1dW42MwMcNTXwySu\r\nMTjikFwMe5IQb8GKMr5GKfQczNtfI+kob4yeXCDIt8jsp7qQpxLoXIKf6SjP\r\nLDveRgoM8hfrfKH9pNyerEZDsRW7LyrbiGOmQBhPUlSri5bhldqA80PaR4dX\r\ns/jr8EQcgM+JTzNGx9q/X2IcT8dpJjTHiIsAyoEp5DGwKOjNeCCrr8wtBwsy\r\ne/2NhdWPfPuqOei/RFwZApxSsE5mTW+ft6+M3QxGsub0N7DgrpX5won4PQnk\r\nfcyFS/qY4avHxMgRBEeySs6bRAO1Snn+JrsW64F9LpofS0h4XU0GDUbc1xYe\r\nBPnqMo33Q2iIz2D+7OchOyIKh3xaLiHroG4=\r\n=4ZQI\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"simonbishopza","email":"simon.bishop.za@gmail.com"},"directories":{},"maintainers":[{"name":"smc-tenacious","email":"eggers.jens@gmail.com"},{"name":"simonbishopza","email":"simon.bishop.za@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/happn-db-provider-elasticsearch_1.0.13_1661852265969_0.828291367748758"},"_hasShrinkwrap":false},"1.0.14-prerelease-2":{"name":"happn-db-provider-elasticsearch","version":"1.0.14-prerelease-2","private":false,"scripts":{"test":"_mocha --recursive --exit silence.js test/*","test-cover":"nyc --reporter=lcov --reporter=text --reporter=html npm test","test-unit":"mocha silence.js test/unit/* --recursive"},"dependencies":{"happn-commons":"^1.1.0","agentkeepalive":"^3.3.0","bluebird":"2.10.2","elasticsearch":"^13.2.0","extract-values":"^0.1.2","happn-logger":"2.2.0-prerelease-2","micromustache":"^5.2.0","redis-lru-cache":"^1.0.14-prerelease-2","traverse":"0.6.6"},"devDependencies":{"happn-commons-test":"^1.1.0","happn-3":"13.2.1-prerelease-2","json-from-schema":"1.10.0"},"readme":"happner elastic dataprovider\n----------------------------\n*This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*\n\n### supports elastic <= 6.4.0\n\n### installing elasticsearch and redis on your local machine:\n```bash\n# elastic search - version is 5.1.1\ndocker pull docker.elastic.co/elasticsearch/elasticsearch:5.1.1\n\ndocker run -p 9200:9200 \\\n    -p 9300:9300 \\\n    -e \"xpack.security.enabled=false\" \\\n    docker.elastic.co/elasticsearch/elasticsearch:5.1.1\n\n# redis\ndocker pull redis\n\ndocker run -p 6379:6379 -d redis\n```\n\n### installation instructions:\n\n```bash\n#install deps\nnpm install happner-elastic-dataprovider\n#test run - most should pass\nmocha test/func\n\n#now run the historian data upload - this is demo code\nnode test/historian/server/start.js\n```\n\n#### Installing ElasticSearch and running ElasticSearch\n\n```bash\ncurl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.1-linux-x86_64.tar.gz\ntar -xvf elasticsearch-5.5.1-linux-x86_64.tar.gz \n./elasticsearch-5.5.1/bin/elasticsearch\n\n\n```\n### configuration:\n\n```javascript\n\n//single use config - everything goes into elasticsearch\nvar config = {\n  happn:{\n    services:{\n      data:{\n        config:{\n          datastores:[\n            {\n              name:'elastic',\n              provider:'happner-elastic-dataprovider',\n              settings:{\"host\":\"localhost:9200\"},\n              isDefault:true\n            }\n          ]\n        }\n      }\n    }\n  }\n};\n\n//dual config, send all items starting with the path /history/ to elastic search, all others go to the default nedb instance\nvar config = {\n  happn:{\n    services:{\n      data:{\n        config:{\n          datastores:[\n            {\n              name:'elastic',\n              provider:'happner-elastic-dataprovider',\n              settings:{\"host\":\"localhost:9200\"},\n              patterns:[\"/history/*\"]\n            },\n            {\n              name:'happn',\n              isDefault:true\n            }\n          ]\n        }\n      }\n    }\n  }\n};\n\n//then create happner instance as usual:\n\nvar Happner = require('happner');\n\nHappner.create(config)\n\n.then(function(mesh) {\n// got running mesh\n})\n\n.catch(function(error) {\nconsole.error(error.stack || error.toString())\nprocess.exit(1);\n});\n\n```\n\nHappner setup instructions in more detail [here](https://github.com/happner/happner/blob/master/docs/walkthrough/the-basics.md).\n\n## Supported Mongo Style Search Parameters \n\n* $eq\n* $gt\n* $gte\n* $in\n* $lt\n* $lte\n* $ne\n* $nin\n* $and\n* $not\n* $nor\n* $or\n* $exists\n* $regex\n\n### Limitations\n\n## sorting by a text field\n```javascript\n\nvar test_path = '/1_eventemitter_embedded_sanity/' +\n    test_id +\n    '/test subscribe/data/complex/' +\n    require('shortid').generate();\n\nvar complex_obj = {\n  regions: ['North', 'South'],\n  towns: ['North.Cape Town'],\n  categories: ['Action', 'History'],\n  subcategories: ['Action.angling', 'History.art'],\n  keywords: ['bass', 'Penny Siopis'],\n  field1: 'field1'\n};\n\nvar options1 = {\n  sort: {\n    'data.field1': 1 //unless you have set up the index mapping to make 'data.field1' a keyword, this search  will fail, see ./test/__fixtures/happn-config for a keyword mapping\n  },\n  limit: 1\n};\n\nawait publisherclient.set(test_path, complex_obj);\n\n// because we sorting by a text field this will be rejected, you can sort by dates and number type fields however\nconst results = await publisherclient.get(\n  '/1_eventemitter_embedded_sanity/' + test_id + '/test subscribe/data/complex/*',\n  {\n    criteria: criteria1,\n    options: options1\n  }\n);\n\n```\n\n#### Embedded documents \nEmbedded documents works slightly different than traditional mongo queries\nConsider the following document:\n\n\n`\n{\n size:{\n        h: 14, \n        w: 21, \n        uom: \"cm\" \n    }\n}\n`\n\nField order does not matter for this provider while they matter for regular mongo. Given the following query, mongo would not match while this provider will. \n\n`\n{\n size:{\n        w: 21, \n        h: 14, \n        uom: \"cm\" \n    }\n}\n`\n\nWhen a document is specified as an query mongo requires the document to be a precise match. This provider only requires the specified fields to match. The following query will match using this provider but won't match using mongo\n\n` {\n  size:{\n         w: 21, \n         h: 14 \n              }\n }`","readmeFilename":"readme.md","gitHead":"c2692bf12f40a4029b1db265ff639324458a4ce5","description":"happner elastic dataprovider ---------------------------- *This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*","_id":"happn-db-provider-elasticsearch@1.0.14-prerelease-2","_nodeVersion":"16.13.1","_npmVersion":"8.5.4","dist":{"integrity":"sha512-1qOfYdtb1w6BpZGbYp1ASN9hBlFzuVhNIBttpHJ628hQHBL8FhJ4mHen9C7hGaBgufihC7gyJToA1yULZRsitQ==","shasum":"e134bf68501383591f9e0c58cc7b08047a07d258","tarball":"https://registry.npmjs.org/happn-db-provider-elasticsearch/-/happn-db-provider-elasticsearch-1.0.14-prerelease-2.tgz","fileCount":8,"unpackedSize":44197,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDYFd7kbmcaSk9OfVKJCaO56VNN+GYwjyjeRZ/C5T9tdgIhAJEoucpMCkDo7tqpZzk6qC9iNh8mYSAAIL7n3BvqMFGL"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjGbg9ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoD6BAAhJ+xfSrKVd1leLQkn+7o0tU8fmBcimn/E22wOGMbbeV74sJf\r\nnxP8+c0auq6rq9vt5e2PyuFwm3HRqcsuhPHAxlczzs+y8jg8uAH/7pxXp5xG\r\n1FYNJqmwUPCG2kv68b3zchqPn6zUROFSMo83v8ZFheEi2Pi1lZz2m+i7/AYP\r\naGLEfS290TUdJSi7F8PptaQH8ENON0rADjRkWAKv46TgtOYDrxcSObYFxCg3\r\nPas+IzfwOhX8GzexjOFPlPElb7qlDVBKhWCmyBN7KF1qTiftF7W+d19oSfaX\r\nPzjhdmc/Rya+x9DAPJXNa0E+VS/2M9jR6flPgwVQ2nMPWvsCxaT8AAFVCrOQ\r\nRvNbcEHBoA36Rtb466K5FlfgoWk/fpSa+NfLuJjInk4ZZNkPSCdp+CD+LVNi\r\n/jjEgIhKIR9BVkU1eNNYEsfgXAO4ijxUo3LUPvwwow+gyvbi9t76yfyeqb0Z\r\niUHCY2ID4oS2Wynj2/9pk9ArldMjRqHpjwysgXaQr/FR4OSjHfd2/xD544gb\r\nksITgV569ygHZixDO7S7s0D9QeTAJLJItwLJ7arzC21VMSc5tev5A63KWtD7\r\nJ3q0wcxLp+WAM/Lxwtd10pxcetiSg3o6vLRaT7Aq58NULckbuU3OSypWVNvy\r\nTycR4dabhy5y0Yz5IgSLndOeo6rCrhPKKFI=\r\n=yWuu\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"simonbishopza","email":"simon.bishop.za@gmail.com"},"directories":{},"maintainers":[{"name":"smc-tenacious","email":"eggers.jens@gmail.com"},{"name":"simonbishopza","email":"simon.bishop.za@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/happn-db-provider-elasticsearch_1.0.14-prerelease-2_1662629949595_0.5478754963099415"},"_hasShrinkwrap":false},"1.0.14-prerelease-3":{"name":"happn-db-provider-elasticsearch","version":"1.0.14-prerelease-3","private":false,"scripts":{"test":"_mocha --recursive --exit silence.js test/*","test-cover":"nyc --reporter=lcov --reporter=text --reporter=html npm test","test-unit":"mocha silence.js test/unit/* --recursive"},"dependencies":{"happn-commons":"^1.1.0","agentkeepalive":"^3.3.0","bluebird":"2.10.2","elasticsearch":"^13.2.0","extract-values":"^0.1.2","happn-logger":"2.2.0-prerelease-3","micromustache":"^5.2.0","redis-lru-cache":"^1.0.14-prerelease-3","traverse":"0.6.6"},"devDependencies":{"happn-commons-test":"^1.1.0","happn-3":"13.2.1-prerelease-3","json-from-schema":"1.10.0"},"readme":"happner elastic dataprovider\n----------------------------\n*This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*\n\n### supports elastic <= 6.4.0\n\n### installing elasticsearch and redis on your local machine:\n```bash\n# elastic search - version is 5.1.1\ndocker pull docker.elastic.co/elasticsearch/elasticsearch:5.1.1\n\ndocker run -p 9200:9200 \\\n    -p 9300:9300 \\\n    -e \"xpack.security.enabled=false\" \\\n    docker.elastic.co/elasticsearch/elasticsearch:5.1.1\n\n# redis\ndocker pull redis\n\ndocker run -p 6379:6379 -d redis\n```\n\n### installation instructions:\n\n```bash\n#install deps\nnpm install happner-elastic-dataprovider\n#test run - most should pass\nmocha test/func\n\n#now run the historian data upload - this is demo code\nnode test/historian/server/start.js\n```\n\n#### Installing ElasticSearch and running ElasticSearch\n\n```bash\ncurl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.1-linux-x86_64.tar.gz\ntar -xvf elasticsearch-5.5.1-linux-x86_64.tar.gz \n./elasticsearch-5.5.1/bin/elasticsearch\n\n\n```\n### configuration:\n\n```javascript\n\n//single use config - everything goes into elasticsearch\nvar config = {\n  happn:{\n    services:{\n      data:{\n        config:{\n          datastores:[\n            {\n              name:'elastic',\n              provider:'happner-elastic-dataprovider',\n              settings:{\"host\":\"localhost:9200\"},\n              isDefault:true\n            }\n          ]\n        }\n      }\n    }\n  }\n};\n\n//dual config, send all items starting with the path /history/ to elastic search, all others go to the default nedb instance\nvar config = {\n  happn:{\n    services:{\n      data:{\n        config:{\n          datastores:[\n            {\n              name:'elastic',\n              provider:'happner-elastic-dataprovider',\n              settings:{\"host\":\"localhost:9200\"},\n              patterns:[\"/history/*\"]\n            },\n            {\n              name:'happn',\n              isDefault:true\n            }\n          ]\n        }\n      }\n    }\n  }\n};\n\n//then create happner instance as usual:\n\nvar Happner = require('happner');\n\nHappner.create(config)\n\n.then(function(mesh) {\n// got running mesh\n})\n\n.catch(function(error) {\nconsole.error(error.stack || error.toString())\nprocess.exit(1);\n});\n\n```\n\nHappner setup instructions in more detail [here](https://github.com/happner/happner/blob/master/docs/walkthrough/the-basics.md).\n\n## Supported Mongo Style Search Parameters \n\n* $eq\n* $gt\n* $gte\n* $in\n* $lt\n* $lte\n* $ne\n* $nin\n* $and\n* $not\n* $nor\n* $or\n* $exists\n* $regex\n\n### Limitations\n\n## sorting by a text field\n```javascript\n\nvar test_path = '/1_eventemitter_embedded_sanity/' +\n    test_id +\n    '/test subscribe/data/complex/' +\n    require('shortid').generate();\n\nvar complex_obj = {\n  regions: ['North', 'South'],\n  towns: ['North.Cape Town'],\n  categories: ['Action', 'History'],\n  subcategories: ['Action.angling', 'History.art'],\n  keywords: ['bass', 'Penny Siopis'],\n  field1: 'field1'\n};\n\nvar options1 = {\n  sort: {\n    'data.field1': 1 //unless you have set up the index mapping to make 'data.field1' a keyword, this search  will fail, see ./test/__fixtures/happn-config for a keyword mapping\n  },\n  limit: 1\n};\n\nawait publisherclient.set(test_path, complex_obj);\n\n// because we sorting by a text field this will be rejected, you can sort by dates and number type fields however\nconst results = await publisherclient.get(\n  '/1_eventemitter_embedded_sanity/' + test_id + '/test subscribe/data/complex/*',\n  {\n    criteria: criteria1,\n    options: options1\n  }\n);\n\n```\n\n#### Embedded documents \nEmbedded documents works slightly different than traditional mongo queries\nConsider the following document:\n\n\n`\n{\n size:{\n        h: 14, \n        w: 21, \n        uom: \"cm\" \n    }\n}\n`\n\nField order does not matter for this provider while they matter for regular mongo. Given the following query, mongo would not match while this provider will. \n\n`\n{\n size:{\n        w: 21, \n        h: 14, \n        uom: \"cm\" \n    }\n}\n`\n\nWhen a document is specified as an query mongo requires the document to be a precise match. This provider only requires the specified fields to match. The following query will match using this provider but won't match using mongo\n\n` {\n  size:{\n         w: 21, \n         h: 14 \n              }\n }`","readmeFilename":"readme.md","gitHead":"dbf146aec79fe4b2511a72c2050d097b862fcaf4","description":"happner elastic dataprovider ---------------------------- *This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*","_id":"happn-db-provider-elasticsearch@1.0.14-prerelease-3","_nodeVersion":"16.13.1","_npmVersion":"8.5.4","dist":{"integrity":"sha512-zxqsvYIQa1GXrGdMA9FRESZY/Q6XMSVT4qtDmWcwUfyzufKDGsjeohNTzrfxySSzCYMrPPU8D2KO/tl4eZP0cQ==","shasum":"6b453c426d196f7e7d425f141cd1f8257c0ac1ef","tarball":"https://registry.npmjs.org/happn-db-provider-elasticsearch/-/happn-db-provider-elasticsearch-1.0.14-prerelease-3.tgz","fileCount":8,"unpackedSize":44197,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIANKC6qYer5C6Cl0BDqUGxJx8v+R5dGURmoGeSJSlvMmAiBCV2wsqN3N3WrsYshDvkfmku7kwYeJ+EDrcxXlVTI19A=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjGfJHACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmozsRAAm7TGWdYX+0XeI4ykygfDjQaP9vZN7TpKLF6U6+PFNe+5y1j3\r\nC5rwigR3jaj9RV8in6W/QsLl0vdncKSWKq9f+EkshkUkNgF5HZhJizinroDg\r\n/9e5gR4qGy4eQch8bRdza5k3Ge2SUaMnC/f6PobyobfyP8O9xdqhpDJ8ax9D\r\n9ZN76Us9A8dFzcvtk/hNnFmzckRZQyOQXV1NIQh+yC19xu/UIImM7KjNtHiH\r\nSVl6RdR2sreET2yjypgPeJdKVHQo7M7e5R2/6c5RDP8nGU3/v2a0FOcnvotD\r\nJemKACkMeGxhnFKf9HU5KrtYYeejIH+mKooNaIhhnP3NB6pFAjywHqW9HgQG\r\nbYp0sWJbSOslFtIzrqcZvhMV5dG7XLnZDFkiqcsc9o0xzkpofQdllyBBuand\r\n33TIpgQbgbC2ZCFJ/U113SImYej7BI8SLiPY0OLiGUN2FIg7ckBBCuOV5dZP\r\n7R2b0jou/S8Am7CIVMc9dE7I0saP7t1Jd9CHXfjLwNUZW7baIHLbhzAJFf9W\r\n/6j4LmV76uxuf+xDxVbFZaX7U5LRllFTwDrhPiTv5nDfQdbYmz5rSMi+GQ5H\r\n636qXiWkHLQcAy5kuy3zKbYf6427GXCE9lgy00jmBo8Nf9h0KiuhX4sxy8Xy\r\nJUW6r3CUsAj5U+TeRqpJDmrpddF//8q7O5E=\r\n=7vnJ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"simonbishopza","email":"simon.bishop.za@gmail.com"},"directories":{},"maintainers":[{"name":"smc-tenacious","email":"eggers.jens@gmail.com"},{"name":"simonbishopza","email":"simon.bishop.za@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/happn-db-provider-elasticsearch_1.0.14-prerelease-3_1662644806937_0.21515488123282123"},"_hasShrinkwrap":false},"1.0.14":{"name":"happn-db-provider-elasticsearch","version":"1.0.14","private":false,"scripts":{"test":"_mocha --recursive --exit silence.js test/*","test-cover":"nyc --reporter=lcov --reporter=text --reporter=html npm test","test-unit":"mocha silence.js test/unit/* --recursive"},"dependencies":{"happn-commons":"^1.1.0","agentkeepalive":"^3.3.0","bluebird":"2.10.2","elasticsearch":"^13.2.0","extract-values":"^0.1.2","happn-logger":"2.2.0","micromustache":"^5.2.0","redis-lru-cache":"^1.0.14","traverse":"0.6.6"},"devDependencies":{"happn-commons-test":"^1.1.0","happn-3":"13.2.1","json-from-schema":"1.10.0"},"gitHead":"09c282e829c2716d45bef015f431815bb01ea8f6","description":"happner elastic dataprovider ---------------------------- *This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*","_id":"happn-db-provider-elasticsearch@1.0.14","_nodeVersion":"16.13.1","_npmVersion":"8.5.4","dist":{"integrity":"sha512-2DLj/GRl1deXFQzADJ2ieAQhkm6DZv/vqXw1I5qxL/WCyaB9zVr/QGz6QNNAzYWvprfnmoimVRXb8JVHtO2Acg==","shasum":"b8f37e21aa61d7c99fcd9068ef237d98e2575830","tarball":"https://registry.npmjs.org/happn-db-provider-elasticsearch/-/happn-db-provider-elasticsearch-1.0.14.tgz","fileCount":8,"unpackedSize":44145,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCle1WTSz8qndJsZXwKYFs4RhIGcwf57EBDYF7uULPamgIhAP42HzErig5LfCTa7m3xaDtggNA8Lf5y/s903+NxCa87"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjIGv5ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmryEA//W8e6GZAVs01v1U+f17isv2wwO2ujELtuN48xQsmbwQFKdRHu\r\njT813Ryu4gfM7TzH+OL5cDFrlVlzrq0zpovRZagSbJFd2qSA+ALF9RscUuFO\r\niW0tY0xVZn8QGJ0fZ+dA4O2LUECOKUJdvYe7rI9p86WQLdq3PoEyndIHai8T\r\nYDMsYLcAH9sb95kY0veGnWxiKhRv6HNWt88QutCJnQuce+9FMAqM6l/OeeIq\r\nlJRQqE04YmMoMq4n8kDMbPJG9eZugJTNyEz+q2iBedD3DZZB6NeKa0RQ5vyH\r\nZbdsXxuaK6PAZ9u4/upQX4Eo9mtnZ6NAvMNCA1jNxCxz+8pi70GampnefpCa\r\nyDd3AQ5zNZXcZTnvFXJrlSfoe4REB94fKZlAtoiqe+LEFO6Zg4yo1bgmWGT2\r\nGF8fSPXymJwfKPXhJeJbWtEaK57RO7hKE5CQhT33jt64R5RHQXw8HCNt6Uaf\r\nYmZfe4//lYqQbtMzq567zjYAWPI7YpSRZtS+Tzl3BkQMmdLY3tRfmBHSICms\r\nKm8Bbj8c+QxQv7ciYJH/cR16z+gp31UEH+3zAnzw+ziggdONNHeQHZgctMwF\r\nawMXauvkuw7px9BJMvAHYqcthxH9uvvWATmeMRrqwPFXsdi3naMhRZqa1Z0e\r\nfTF+NybIX8rzTs9Omhexob0BtaUBUBFYklk=\r\n=bdnE\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"simonbishopza","email":"simon.bishop.za@gmail.com"},"directories":{},"maintainers":[{"name":"smc-tenacious","email":"eggers.jens@gmail.com"},{"name":"simonbishopza","email":"simon.bishop.za@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/happn-db-provider-elasticsearch_1.0.14_1663069177629_0.26339925319933855"},"_hasShrinkwrap":false},"1.0.15":{"name":"happn-db-provider-elasticsearch","version":"1.0.15","private":false,"scripts":{"test":"_mocha --recursive --exit silence.js test/*","test-cover":"nyc --reporter=lcov --reporter=text --reporter=html npm test","test-unit":"mocha silence.js test/unit/* --recursive"},"dependencies":{"happn-commons":"^1.1.0","agentkeepalive":"^3.3.0","bluebird":"2.10.2","elasticsearch":"^13.2.0","extract-values":"^0.1.2","happn-logger":"2.2.0","micromustache":"^5.2.0","redis-lru-cache":"^1.0.15","traverse":"0.6.6"},"devDependencies":{"happn-commons-test":"^1.1.0","happn-3":"13.3.0","json-from-schema":"1.10.0"},"gitHead":"fb7bd9e940b714b6c0e2376e514bbf4c31c8c4b8","description":"happner elastic dataprovider ---------------------------- *This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*","_id":"happn-db-provider-elasticsearch@1.0.15","_nodeVersion":"16.13.1","_npmVersion":"8.5.4","dist":{"integrity":"sha512-+jZxOjCU9o6kyCtDgz3s/YIlRVgiPYXCYhORjpN9WWvrG2bVdnX4oteoT0iwwcIvdRgp3+pQbm3BKpWPFohQsQ==","shasum":"1ec8e709b840f4a6e66ddc776f802f51270f5e4d","tarball":"https://registry.npmjs.org/happn-db-provider-elasticsearch/-/happn-db-provider-elasticsearch-1.0.15.tgz","fileCount":8,"unpackedSize":44219,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBaaIG9xJvDUwPT6sLL+DvBI5S9Ra0FrHe8V1dRCrhvWAiA/Lv5/zbV3FzoMiVDQZpAIXWrU56llzcwE0AvQoh/W9w=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjLEmhACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqrkw/9FGYg8UwB2MceV3ecsuH4UDAsMbZntPPkmEHi+jGuGv/enwDd\r\nPXX2oUSIr4cOkAHobp92s+wB9zUJdUG5UgmCr4MhM9tT22Veiy9dFj+b8RQi\r\nMdoZt2Q7Juo68zeG7s9E3dNWSOcmL9byuOvqz8KoVYs+R3eLz5XvIUcIuShX\r\nQQGQ/nYMaWpozNFbOkpDKppnbYmNSOU8cjsHfbJShgfeHWiTQWVCymNp4jaH\r\nec8+FAGj9mJzytLjKdikuyPK/6/1JDlV5Ijo3HmoxFD+ovxDl3D5DUhXvvYA\r\nfoFq2sl7UWaePu/piXI0XwHLEDD1WjZr28sUMZRXrUKbhwbYvhUxOk5vF5Kz\r\n2iemGeEgJYLPtNRr4JJ2HhEV4M4elSvONYjKXoy3rOB/aCFQv6toU/7K7jJA\r\nLwdWOeHvhQtkLHWLN2w/JoNsBNPQbvG2rT+KBtnLosURsWYFMnaQ/miEmTJl\r\nR1rCovBOEB35GtCu2oZSTHzrw44lrmotWTjaPcOdtQ6SZHXZDqqCF/7BSDuV\r\nFfEGmX9d7WLpzi2efTO1BwhidrI6cOMlw4f8+LdPROnB70oT55WettHj5SXz\r\nIBWOSnVn7lejRfqDHzAyk6QcNFI8jRJ6s0AlHslrRB2gwf2QGwzw1HjDiDnv\r\nOuTbNR4R5t52oD85iYdMPbju96OEaMQyunw=\r\n=ehfq\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"simonbishopza","email":"simon.bishop.za@gmail.com"},"directories":{},"maintainers":[{"name":"smc-tenacious","email":"eggers.jens@gmail.com"},{"name":"simonbishopza","email":"simon.bishop.za@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/happn-db-provider-elasticsearch_1.0.15_1663846817288_0.8895658780030613"},"_hasShrinkwrap":false},"1.0.16":{"name":"happn-db-provider-elasticsearch","version":"1.0.16","private":false,"scripts":{"test":"_mocha --recursive --exit silence.js test/*","test-cover":"nyc --reporter=lcov --reporter=text --reporter=html npm test","test-unit":"mocha silence.js test/unit/* --recursive"},"dependencies":{"happn-commons":"^1.1.0","agentkeepalive":"^3.3.0","bluebird":"2.10.2","elasticsearch":"^13.2.0","extract-values":"^0.1.2","happn-logger":"2.2.0","micromustache":"^5.2.0","redis-lru-cache":"^1.0.16","traverse":"0.6.6"},"devDependencies":{"happn-commons-test":"^1.1.0","happn-3":"13.4.0","json-from-schema":"1.10.0"},"gitHead":"05947bdd9a8e1060958e6d24021e732003d02c05","description":"happner elastic dataprovider ---------------------------- *This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*","_id":"happn-db-provider-elasticsearch@1.0.16","_nodeVersion":"16.13.1","_npmVersion":"8.5.4","dist":{"integrity":"sha512-MbhuFkmbS8/3jzGrkZOQyx/cxo9XZ5S6HZtT3NpT8N5IW6oGGPe/R4y6GDX7iEmsEN3HK6Ko9lzdM220QcIipQ==","shasum":"2d53e74554de999f6dfc693532c852bcdd045616","tarball":"https://registry.npmjs.org/happn-db-provider-elasticsearch/-/happn-db-provider-elasticsearch-1.0.16.tgz","fileCount":8,"unpackedSize":44304,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCkzpP9GTgrvoaq1UzRVNSAL3aQFK5nav7tMyZm52d4gQIgc+Z168PTFR4xGsCzDKAlo54sVElI4lok9qGd5pANT/o="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjOtc8ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp5MhAAjzii/S41go2bhOyugyngESIdpmpo7DITBOLrrzHDGRaD+KnP\r\nNmuzrl405zDchAL73pcodaQX4t9euFG+UOX1ScqUT0WIWn3Xatym/UncGgd3\r\nWw230ixvMWDQMjeqrVoxJHhkdtb92Lzi+klQz3aSZiTFJQ7qVIcun1i4gI5m\r\n2ONLbRTRBpO4taKVwhenNV2I4uwH/m/7Q7PCq8ap4jMT+e+oYG+u+Lzreocm\r\n+FU77uGpui0rI1SLB/iQnui9DrGEk9X2R7Ts1pb2Yk0qMnc2QEl6p3dOBGv9\r\n1hNIbRm4DC3NhF0y9LmnfyQCaL8y1IAja9p/X8/YYk07usFjmXt+YFSiJon9\r\n2zb7aerFVceBFzrvTEVisMeSrZS1y/vik7eiChbntDLG2u0GSfrNiex8IOSe\r\nxfadWbVmZ6QGoXCAoxLuOdfO9NVHraZv//rLylEWQwCQCTnQyZ+ujk2+dmQY\r\nEzAstY8pTS1hJvoc/oeI1RbMIMvlAE/8Uo3Hi6vl3CzwAr+H94vDgL7pa0OJ\r\nt73yOxa3iJBqSkqdAxX5YVFUbAzbo9hInQrdFF+roRjFrjhZVDffFhVR9Jin\r\nqyZQUGseDwJt18KN/Mc35AlJL4DkedCT9yhqt2yleAn/VbjJvdmqvEpjQmT8\r\np38M9hq0jCRFCSQJ3SR2RE8oggKZXA26Ed8=\r\n=Lqn0\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"simonbishopza","email":"simon.bishop.za@gmail.com"},"directories":{},"maintainers":[{"name":"smc-tenacious","email":"eggers.jens@gmail.com"},{"name":"simonbishopza","email":"simon.bishop.za@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/happn-db-provider-elasticsearch_1.0.16_1664800572801_0.9696709459536723"},"_hasShrinkwrap":false}},"time":{"created":"2022-03-01T20:08:51.828Z","1.0.0":"2022-03-01T20:08:51.975Z","modified":"2022-10-03T12:36:13.039Z","1.0.1":"2022-03-03T12:57:48.915Z","1.0.2":"2022-03-11T11:34:22.889Z","1.0.3":"2022-03-30T06:51:41.704Z","1.0.4":"2022-04-07T18:05:48.991Z","1.0.5-prerelease-1":"2022-04-20T21:16:39.680Z","1.0.5-prerelease-2":"2022-04-28T13:18:59.229Z","1.0.5":"2022-05-05T08:46:28.688Z","1.0.6":"2022-05-06T08:47:56.789Z","1.0.7":"2022-05-09T15:34:20.043Z","1.0.8-prerelease.1":"2022-05-17T15:00:54.949Z","1.0.8":"2022-05-27T16:03:59.503Z","1.0.9":"2022-06-03T10:20:54.367Z","1.0.10-prerelease.1":"2022-06-06T11:12:48.742Z","1.0.10-prerelease-1":"2022-06-09T12:44:33.374Z","1.0.10":"2022-06-09T13:47:55.265Z","1.0.11-prerelease-1":"2022-06-13T09:40:45.008Z","1.0.11":"2022-06-28T12:55:06.800Z","1.0.12-prerelease-1":"2022-06-28T14:14:01.331Z","1.0.12-prerelease-2":"2022-07-14T11:54:30.306Z","1.0.12-prerelease-3":"2022-07-14T13:47:22.202Z","1.0.12":"2022-07-21T08:03:46.222Z","1.0.13-prerelease-1":"2022-08-07T19:33:37.182Z","1.0.13-prerelease-2":"2022-08-11T11:48:14.641Z","1.0.13-prerelease-3":"2022-08-12T16:43:11.157Z","1.0.13-prerelease-4":"2022-08-18T10:50:39.288Z","1.0.13-prerelease-5":"2022-08-18T13:36:00.094Z","1.0.13-prerelease-6":"2022-08-22T11:30:31.227Z","1.0.13-prerelease-7":"2022-08-24T08:37:08.095Z","1.0.13-prerelease-8":"2022-08-25T08:50:42.034Z","1.0.13":"2022-08-30T09:37:46.092Z","1.0.14-prerelease-2":"2022-09-08T09:39:09.713Z","1.0.14-prerelease-3":"2022-09-08T13:46:47.123Z","1.0.14":"2022-09-13T11:39:37.796Z","1.0.15":"2022-09-22T11:40:17.453Z","1.0.16":"2022-10-03T12:36:12.958Z"},"maintainers":[{"name":"smc-tenacious","email":"eggers.jens@gmail.com"},{"name":"simonbishopza","email":"simon.bishop.za@gmail.com"}],"description":"happner elastic dataprovider ---------------------------- *This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*","readme":"happner elastic dataprovider\n----------------------------\n*This dataprovider provides the ability to run happner/happn instances off of elasticsearch instead of mongo or nedb*\n\n### supports elastic <= 6.4.0\n\n### installing elasticsearch and redis on your local machine:\n```bash\n# elastic search - version is 5.1.1\ndocker pull docker.elastic.co/elasticsearch/elasticsearch:5.1.1\n\ndocker run -p 9200:9200 \\\n    -p 9300:9300 \\\n    -e \"xpack.security.enabled=false\" \\\n    docker.elastic.co/elasticsearch/elasticsearch:5.1.1\n\n# redis\ndocker pull redis\n\ndocker run -p 6379:6379 -d redis\n```\n\n### installation instructions:\n\n```bash\n#install deps\nnpm install happner-elastic-dataprovider\n#test run - most should pass\nmocha test/func\n\n#now run the historian data upload - this is demo code\nnode test/historian/server/start.js\n```\n\n#### Installing ElasticSearch and running ElasticSearch\n\n```bash\ncurl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.1-linux-x86_64.tar.gz\ntar -xvf elasticsearch-5.5.1-linux-x86_64.tar.gz \n./elasticsearch-5.5.1/bin/elasticsearch\n\n\n```\n### configuration:\n\n```javascript\n\n//single use config - everything goes into elasticsearch\nvar config = {\n  happn:{\n    services:{\n      data:{\n        config:{\n          datastores:[\n            {\n              name:'elastic',\n              provider:'happner-elastic-dataprovider',\n              settings:{\"host\":\"localhost:9200\"},\n              isDefault:true\n            }\n          ]\n        }\n      }\n    }\n  }\n};\n\n//dual config, send all items starting with the path /history/ to elastic search, all others go to the default nedb instance\nvar config = {\n  happn:{\n    services:{\n      data:{\n        config:{\n          datastores:[\n            {\n              name:'elastic',\n              provider:'happner-elastic-dataprovider',\n              settings:{\"host\":\"localhost:9200\"},\n              patterns:[\"/history/*\"]\n            },\n            {\n              name:'happn',\n              isDefault:true\n            }\n          ]\n        }\n      }\n    }\n  }\n};\n\n//then create happner instance as usual:\n\nvar Happner = require('happner');\n\nHappner.create(config)\n\n.then(function(mesh) {\n// got running mesh\n})\n\n.catch(function(error) {\nconsole.error(error.stack || error.toString())\nprocess.exit(1);\n});\n\n```\n\nHappner setup instructions in more detail [here](https://github.com/happner/happner/blob/master/docs/walkthrough/the-basics.md).\n\n## Supported Mongo Style Search Parameters \n\n* $eq\n* $gt\n* $gte\n* $in\n* $lt\n* $lte\n* $ne\n* $nin\n* $and\n* $not\n* $nor\n* $or\n* $exists\n* $regex\n\n### Limitations\n\n## sorting by a text field\n```javascript\n\nvar test_path = '/1_eventemitter_embedded_sanity/' +\n    test_id +\n    '/test subscribe/data/complex/' +\n    require('shortid').generate();\n\nvar complex_obj = {\n  regions: ['North', 'South'],\n  towns: ['North.Cape Town'],\n  categories: ['Action', 'History'],\n  subcategories: ['Action.angling', 'History.art'],\n  keywords: ['bass', 'Penny Siopis'],\n  field1: 'field1'\n};\n\nvar options1 = {\n  sort: {\n    'data.field1': 1 //unless you have set up the index mapping to make 'data.field1' a keyword, this search  will fail, see ./test/__fixtures/happn-config for a keyword mapping\n  },\n  limit: 1\n};\n\nawait publisherclient.set(test_path, complex_obj);\n\n// because we sorting by a text field this will be rejected, you can sort by dates and number type fields however\nconst results = await publisherclient.get(\n  '/1_eventemitter_embedded_sanity/' + test_id + '/test subscribe/data/complex/*',\n  {\n    criteria: criteria1,\n    options: options1\n  }\n);\n\n```\n\n#### Embedded documents \nEmbedded documents works slightly different than traditional mongo queries\nConsider the following document:\n\n\n`\n{\n size:{\n        h: 14, \n        w: 21, \n        uom: \"cm\" \n    }\n}\n`\n\nField order does not matter for this provider while they matter for regular mongo. Given the following query, mongo would not match while this provider will. \n\n`\n{\n size:{\n        w: 21, \n        h: 14, \n        uom: \"cm\" \n    }\n}\n`\n\nWhen a document is specified as an query mongo requires the document to be a precise match. This provider only requires the specified fields to match. The following query will match using this provider but won't match using mongo\n\n` {\n  size:{\n         w: 21, \n         h: 14 \n              }\n }`","readmeFilename":"readme.md"}