【发布时间】:2018-07-06 01:24:50
【问题描述】:
我有一堆产品存储在索引中。假设以下是单个产品的示例:
'productID' => 'sandbag'
'productName' => 'Bag of sand'
'productDescription' => 'A bag of sand'
'sizes' => array
0 =>
'sizeID' => '1wht'
'sizeName' => '1 lb white'
1 =>
'sizeID' => '1blk'
'sizeName' => '1 lb black'
2 =>
'sizeID' => '2wht'
'sizeName' => '2 lb white'
3 =>
'sizeID' => '2blk'
'sizeName' => '2 lb black'
black 1 lb 的 ElasticSearch 查询会显示该产品。但是,black 1 lb sand 的查询不会。
如果我将所有空格替换为 AND,则查询变为 black AND 1 AND lb AND sand,它会出现,但这似乎会杀死带引号的查询,例如 "1 lb black " 沙子。
我的 ElasticSearch 查询如下所示:
"query": {
"query_string": {
"query": "black 1 lb sand",
"default_operator": "AND",
"fields": ["productName", "sizes.sizeName"]
}
}
最终目标是能够在一个查询中匹配尺寸和产品名称(以及我想要的任何其他内容),并在客户需要时支持引用的短语(“1 lb black”)。
我不想将运算符切换到 OR,因为这会带来太多产品。
帮助?
【问题讨论】:
标签: elasticsearch