我已经使用以下映射创建了ElasticSearch索引。 我需要编写复杂搜索查询,比如在查询结果上查找相关项。 Ex.Find项目的价格=" 100"。从搜索结果中获取ItemBrand,然后找到具有相同ItemBrand的其他项目。(类似产品)。 谁能帮我吗?
PUT myindex-solvisoft2
{
"mappings": {
"ItemCategory":{
"properties": {Category":{"type": "text"},"IsActive":{"type": "boolean"},"Comment":{"type": "text" }}
},
"ItemBrand": {
"properties": {"Creator": {"type": "keyword"},"DateEffective": {"type": "date"},"DateTerminated": {"type": "date"},"Description": {"type": "text"},
"IsActive": {"type": "boolean"},"ItemBrand": {"type": "keyword"}}
},
"Item": {
"properties": {
"Comment": {"type": "text"},"Creator": {"type": "keyword"},"DateEffective": {"type": "date"},
"DateTerminated": {"type": "date"},"IsActive": {"type": "boolean"},"ItemBrand": {"type": "keyword" },
"ItemDescription": { "type": "text" },"ItemCategory": {"type": "keyword"},"ItemId": {"type": "integer" },
"Price": {"type": "double" } }
}
}
}
答案 0 :(得分:0)
编写查询而不运行它会非常具有挑战性,但我可以分解这些步骤。
使用boolean必须找出价格等于100的记录。
之后您需要过滤掉查询并使用字段搜索具有相同商品品牌的商品。
它并不复杂。
答案 1 :(得分:0)
以下是我对各个问题的解决方案。如果需要,不适合初学者。
GET myindex-solvisoft_similar_products/_search
{
"query": {
"bool": {
"filter": {
"term": {
"brand": "Microsoft"
}
}
}
},
"aggs": {
"colors": {
"terms": {
"field": "color"
}
},
"color_red": {
"filter": {
"term": {
"color": "red"
}
},
"aggs": {
"models": {
"terms": {
"field": "model"
}
}
}
}
},
"post_filter": {
"term": {
"color": "red"
}
}
}