Skip to content

Instantly share code, notes, and snippets.

@sax
Last active August 29, 2015 14:05
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save sax/99ae1591340be381f868 to your computer and use it in GitHub Desktop.
Elasticsearch cross-index query spike
DELETE joininess-product
DELETE joininess-save
DELETE joininess-user
PUT joininess-product
PUT joininess-save
PUT joininess-user
DELETE joininess-product/_mapping/product
GET joininess-product/_mapping/product
PUT joininess-product/product/_mapping
{
"product": {
"properties": {
"name": {
"type": "string",
"analyzer": "snowball"
},
"users": {
"type": "integer"
}
}
}
}
DELETE joininess-save/_mapping/save
GET joininess-save/_mapping/save
PUT joininess-save/save/_mapping
{
"save": {
"properties": {
"user_id": {
"type": "integer"
},
"product_id": {
"type": "integer"
}
}
}
}
DELETE joininess-user/_mapping/user
GET joininess-user/_mapping/user
PUT joininess-user/user/_mapping
{
"user": {
"properties": {
"product_ids": {
"type": "integer"
},
"friends": {
"type": "integer"
}
}
}
}
############################# Index products
POST _bulk
{"index": {"_index": "joininess-product", "_type": "product", "_id": 1}}
{"name": "monkey head","users":[500,501]}
{"index": {"_index": "joininess-product","_type": "product","_id": 2}}
{"name": "dragon","users":[500,501,502]}
{"index": {"_index": "joininess-product","_type": "product","_id": 3}}
{"name": "dragon head","users":[501,502]}
############################# Index saves
POST _bulk
{"index":{"_index":"joininess-save","_type":"save","_id":1}}
{"user_id":500,"product_id":1}
{"index":{"_index":"joininess-save","_type":"save","_id":2}}
{"user_id":501,"product_id":1}
{"index":{"_index":"joininess-save","_type":"save","_id":"3"}}
{"user_id":500,"product_id":2}
{"index":{"_index":"joininess-save","_type":"save","_id":"4"}}
{"user_id":501,"product_id":2}
{"index":{"_index":"joininess-save","_type":"save","_id":"5"}}
{"user_id":502,"product_id":2}
{"index":{"_index":"joininess-save","_type":"save","_id":"6"}}
{"user_id":501,"product_id":3}
{"index":{"_index":"joininess-save","_type":"save","_id":"7"}}
{"user_id":502,"product_id":3}
############################ Index users
POST _bulk
{"index":{"_index":"joininess-user","_type":"user","_id":500}}
{"product_ids":["1","2"], "friends":[501]}
{"index":{"_index":"joininess-user","_type":"user","_id":501}}
{"product_ids":["1","2","3"], "friends":[502]}
{"index":{"_index":"joininess-user","_type":"user","_id":502}}
{"product_ids":["2","3"], "friends": []}
POST joininess-product,joininess-save,joininess-user/_refresh
POST joininess-product,joininess-save,joininess-user/_cache/clear
GET joininess-save,joininess-user/save,user/_search
GET joininess-user/user/_search
GET joininess-product/product/3
GET joininess-product/product/_search
GET joininess-save/save/_search
{
"query":{
"filtered":{
"filter":{
"term":{
"user_id": 500
}
}
}
}
}
GET joininess-product/product/_search
{
"query":{
"filtered":{
"query":{
"match":{
"name": {
"query": "head"
}
}
}
}
}
}
## fails because we cannot search on user_id
## https://github.com/elasticsearch/elasticsearch/issues/6769
## https://github.com/elasticsearch/elasticsearch/pull/3278
GET joininess-product/product/_search
{
"query": {
"filtered": {
"filter": {
"terms": {
"_id": {
"index": "joininess-save",
"type": "save",
"user_id":"500",
"path":"product_id"
}
}
}
}
}
}
GET joininess-product/product/_search
{
"query": {
"filtered": {
"query":{
"term":{
"name":"dragon"
}
},
"filter": {
"terms": {
"_id": {
"index": "joininess-user",
"type": "user",
"id":500,
"path":"product_ids"
}
}
}
}
}
}
GET joininess-product/product/_search
{
"query": {
"filtered": {
"filter": {
"terms": {
"users": [502]
}
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment