The following request searches the product-index and order-index indices.
Create Elasticsearch Index
PUT product-index
{
"settings": {
"analysis": {
"normalizer": {
"lowercaseNormalizer": {
"type": "custom",
"filter": ["lowercase", "asciifolding"]
}
}
}
},
"mappings": {
"properties": {
"ProductName": {
"type": "keyword",
"normalizer": "lowercaseNormalizer"
},
"ProductCode": {
"type": "keyword",
"normalizer": "lowercaseNormalizer"
},
"ProductDescription": {
"type": "text"
},
"ProductFamily": {
"type": "keyword",
"normalizer": "lowercaseNormalizer"
},
"Color": {
"type": "keyword"
}
}
}
}
Adding sample data/records
#Add first Document in elasticsearch
PUT /product-index/_doc/1
{
"ProductName": "CBC Anti Virus",
"ProductCode": "Network",
"ProductDescription": "APAC",
"ProductFamily": "Sales Cloud",
"Color": "Silver"
}
PUT /product-index/_doc/2
{
"ProductName": "CBC Esoteric",
"ProductDescription": "CBC Panel - 1",
"ProductFamily": "Hardware",
"Color": "BLUE"
}
PUT /product-index/_doc/3
{
"ProductName": "CBC Oncology",
"ProductCode": "CBC Health",
"ProductFamily": "Software"
}
PUT /product-index/_doc/4
{
"ProductName": "CBC Panel",
"ProductCode": "Secure Wifi",
"ProductDescription": "Only One Charge Type"
}
PUT /product-index/_doc/5
{
"ProductName": "CBC Panel (Invitro)",
"ProductCode": "Secure Wifi",
"ProductDescription": "CBC Panel",
"ProductFamily": "Hardware",
"Color": "GREEN"
}
PUT /product-index/_doc/6
{
"ProductName": "CBC Panel - Beijing",
"ProductCode": "CBC Panel",
"ProductDescription": "Only One Charge Type",
"ProductFamily": "Software",
"Color": "BLUE"
}
PUT /product-index/_doc/7
{
"ProductName": "Esoteric",
"ProductCode": "CBC",
"ProductFamily": "Marketing Cloud",
"Color": "WHITE"
}
PUT /product-index/_doc/8
{
"ProductName": "Oncology",
"ProductCode": "Network",
"ProductDescription": "CBC",
"ProductFamily": "Sales Cloud",
"Color": "WHITE"
}
Create Elasticsearch Index
PUT order-index
{
"settings": {
"analysis": {
"normalizer": {
"lowercaseNormalizer": {
"type": "custom",
"filter": [
"lowercase",
"asciifolding"
]
}
}
}
},
"mappings": {
"properties": {
"OrderCode": {
"type": "keyword",
"normalizer": "lowercaseNormalizer"
},
"Description": {
"type": "text"
},
"Family": {
"type": "keyword",
"normalizer": "lowercaseNormalizer"
},
"ProductName": {
"type": "keyword",
"normalizer": "lowercaseNormalizer"
},
"ProductId": {
"type": "keyword"
}
}
}
}
Adding sample data/records
#Add first Document in elasticsearch
PUT /order-index/_doc/5c57754b-86a6-41f1-a4af-de65b531fe8f
{
"OrderCode": "Network",
"Description": "APAC",
"Family": "Sales Cloud",
"ProductName": "CBC Anti Virus",
"ProductId": 1
}
PUT /order-index/_doc/218c4907-89c2-482f-90cc-61dd7e27f999
{
"OrderCode": "Network",
"Description": "CBC Panel - 1",
"Family": "Hardware",
"ProductName": "CBC Esoteric",
"ProductId": 2
}
View data/regcords
GET /product-index/_search
GET /order-index/_search
Search case-insensitive records
#Try 1
GET /order-index,product-index/_search
{
"_source": {
"include": [
"Id",
"OrderCode",
"ProductId",
"ProductCode"
],
"exclude": []
},
"from": 0,
"size": 100,
"track_total_hits": true,
"query": {
"bool": {
"filter": [
{
"bool": {
"should": [
{
"query_string": {
"query": "*Network*",
"fields": [
"ProductCode",
"OrderCode"
],
"boost": 7
}
}
]
}
}
]
}
}
}
Note
- Text fields are analyzed.
- For keyword fields we need to add custom elasticsearch setting for analysis.
Reference
- run elasticsearch locally run elasticsearch locally
- Documentation: Elasticsearch - Search multiple data stream and indices
No comments:
Post a Comment