Php elasticsearch中的布尔或查询
我正在尝试在ElasticSearch中创建一个包含AND和OR条件的查询 以下是一些示例数据:Php elasticsearch中的布尔或查询,php,
elasticsearch,Php,
elasticsearch,我正在尝试在ElasticSearch中创建一个包含AND和OR条件的查询 以下是一些示例数据: { "_index": "vins", "_type": "vin", "_id": "1389", "_score": 0.4667464, "_source": { "sNameLngFr": "LE PUITS DU MOINE CREMANT
{
"_index": "vins",
"_type": "vin",
"_id": "1389",
"_score": 0.4667464,
"_source": {
"sNameLngFr": "LE PUITS DU MOINE CREMANT D'ALSACE BRUT",
"sNameLngNl": "LE PUITS DU MOINE CREMANT D'ALSACE BRUT",
"pPrix": 9.19,
"iPromotion": 1,
"pPromotion": 5.99,
"sColor": "pétillant",
"sColorLngFr": "Pétillant",
"sColorLngNl": "Mousserende wijn",
"sProducerUrl": "",
"iVintage": 0,
"sPackageType": "6bouteilles",
"sPackageTypeLngFr": "6 bouteilles",
"sPackageTypeLngNl": "6 flessen",
"sKeepingPotentialLngFr": "1 AN",
"sKeepingPotentialLngNl": "",
"sVolume": "75 cl",
"pays": {
"iPays": 10,
"sNameLngFr": "France",
"sNameLngNl": "Frankrijk"
},
"region": {
"iRegion": 29,
"sNameLngFr": "Alsace",
"sNameLngNl": "Alsace"
},
"appellation": {
"iAppelation": 53,
"sNameLngFr": "Crémant d'Alsace",
"sNameLngNl": "Crémant d'Alsace"
},
"sProducer": "CAVE ORSCHWILLER",
"iKeepingPotential": 0,
"sCommentaireLngFr": "",
"sCommentaireLngNl": "",
"sExternalRef": "717160",
"sFood1": "2",
"sFood2": "7",
"sFood3": "7",
"sEanBarcode": "",
"iFamilyId": 71,
"sFullExternalRef": "00717160",
"iProduct": 1398,
"iLot": 6,
"sUrlLngFr": "http://mestdagh/admin/vins/vinPromoSave?lng=fr",
"sUrlLngNl": "http://mestdagh/admin/vins/vinPromoSave?lng=nl",
"sImgUrl": "http://mestdagh/files/library/Vins/Large/16242.jpg",
"dDateDebut": "08-05-2014",
"dDateFin": "18-05-2014",
"bDateEnd": false
}
},
{
"_index": "vins",
"_type": "vin",
"_id": "1380",
"_score": 0.4643425,
"_source": {
"sNameLngFr": "CREMANT D'ALSACE DEMI-SEC LE PUITS DU MOINE",
"sNameLngNl": "CREMANT D'ALSACE DEMI-SEC LE PUITS DU MOINE",
"pPrix": 8.39,
"iPromotion": 0,
"pPromotion": 8.39,
"sColor": "pétillant",
"sColorLngFr": "Pétillant",
"sColorLngNl": "Mousserende wijn",
"sProducerUrl": "",
"iVintage": 0,
"sPackageType": "6bouteilles",
"sPackageTypeLngFr": "6 bouteilles",
"sPackageTypeLngNl": "6 flessen",
"sKeepingPotentialLngFr": "2 ANS",
"sKeepingPotentialLngNl": "",
"sVolume": "75cl",
"pays": {
"iPays": 10,
"sNameLngFr": "France",
"sNameLngNl": "Frankrijk"
},
"region": {
"iRegion": 29,
"sNameLngFr": "Alsace",
"sNameLngNl": "Alsace"
},
"appellation": {
"iAppelation": 53,
"sNameLngFr": "Crémant d'Alsace",
"sNameLngNl": "Crémant d'Alsace"
},
"sProducer": "CAVE LES FAITIERES",
"iKeepingPotential": 0,
"sCommentaireLngFr": "",
"sCommentaireLngNl": "",
"sExternalRef": "717050",
"sFood1": "2",
"sFood2": "15",
"sFood3": "7",
"sEanBarcode": "",
"iFamilyId": 71,
"sFullExternalRef": "00717050",
"iProduct": 1389,
"iLot": 6,
"sUrlLngFr": "http://mestdagh/service/elasticsearch/indexVins?lng=fr",
"sUrlLngNl": "http://mestdagh/service/elasticsearch/indexVins?lng=nl",
"sImgUrl": "http://mestdagh/files/library/Vins/Large/6982.jpg",
"dDateDebut": null,
"dDateFin": null,
"bDateEnd": null
}
},
{
"_index": "vins",
"_type": "vin",
"_id": "1115",
"_score": 0.4521447,
"_source": {
"sNameLngFr": "SAINT MONT BOISERAIE",
"sNameLngNl": "SAINT MONT BOISERAIE",
"pPrix": 4.69,
"iPromotion": 0,
"pPromotion": 4.69,
"sColor": "blancsec",
"sColorLngFr": "Blanc Sec",
"sColorLngNl": "Droge witte wijn",
"sProducerUrl": "",
"iVintage": 2012,
"sPackageType": "6bouteilles",
"sPackageTypeLngFr": "6 bouteilles",
"sPackageTypeLngNl": "6 flessen",
"sKeepingPotentialLngFr": "2015",
"sKeepingPotentialLngNl": "",
"sVolume": "75 cl",
"pays": {
"iPays": 10,
"sNameLngFr": "France",
"sNameLngNl": "Frankrijk"
},
"region": {
"iRegion": 38,
"sNameLngFr": "Sud-Ouest",
"sNameLngNl": "Sud-Ouest"
},
"appellation": {
"iAppelation": 0,
"sNameLngFr": null,
"sNameLngNl": null
},
"sProducer": "PRODUCTEURS DE PLAIMONT",
"iKeepingPotential": 0,
"sCommentaireLngFr": "",
"sCommentaireLngNl": "",
"sExternalRef": "713304",
"sFood1": "8",
"sFood2": "7",
"sFood3": "7",
"sEanBarcode": "",
"iFamilyId": 71,
"sFullExternalRef": "00713304",
"iProduct": 1124,
"iLot": 6,
"sUrlLngFr": "http://mestdagh/service/elasticsearch/indexVins?lng=fr",
"sUrlLngNl": "http://mestdagh/service/elasticsearch/indexVins?lng=nl",
"sImgUrl": "http://mestdagh/files/library/Vins/Large/16710.jpg",
"dDateDebut": null,
"dDateFin": null,
"bDateEnd": null
}
},
我有一个字段,我需要搜索,必须匹配和其他3个可以是可选的
它看起来像:
必须是iPromotion=1
(
范围,dDateDebut=今天
或
匹配,bDateEnd==true
)
因此,这将选择与促销日期相对应的当前促销中的所有葡萄酒,或始终处于促销中的葡萄酒(bDateEnd设置为true)
到目前为止,我所拥有的,适用于基本日期检查,但不适用于永久性促销:
"query": {
"bool": {
"must": [
{
"fuzzy": {
"sNameLngFr": {
"value": "moine",
"boost": 1,
"fuzziness": 10,
"prefix_length": 0,
"max_expansions": 100
}
}
},
{
"match": {
"iPromotion": 1
}
},
{
"range": {
"dDateDebut": {
"lte": "14-05-2014"
}
}
},
{
"range": {
"dDateFin": {
"gte": "14-05-2014"
}
}
}
],
"should": [
{
"match": {
"bDateEnd": true
}
}
]
}
}
还尝试了此操作,返回了一个错误(SearchPhaseExecutionException
):
谢谢大家! 你应该试试这样的东西
{
"query": {
"bool": {
"must": [
{
"match": {
"iPromotion": "1"
}
},
{
"fuzzy": {
"sNameLngFr": {
"value": "moine",
"boost": 1,
"fuzziness": 10,
"prefix_length": 0,
"max_expansions": 100
}
}
}
],
"should": [
{
"range": {
"dDateDebut": {
"lte": "14-05-2014"
}
}
},
{
"range": {
"dDateFin": {
"gte": "14-05-2014"
}
}
},
{
"match": {
"bDateEnd": true
}
}
]
}
}
}
希望对你有帮助 经过多次尝试和错误后,这项工作开始了:
GET _search
{
"query": {
"bool": {
"must": [
{
"fuzzy": {
"sNameLngFr": {
"value": "chateau",
"boost": 1,
"fuzziness": 10,
"prefix_length": 0,
"max_expansions": 100
}
}
},
{
"match": {
"iPromotion": 1
}
}
],
"should": [
{
"match": {
"bDateEnd": true
}
},
{
"bool": {
"must": [
{
"range": {
"dDateDebut": {
"lte": "14-05-2014"
}
}
},
{
"range": {
"dDateFin": {
"gte": "14-05-2014"
}
}
}
]
}
}
],
"minimum_number_should_match": 1
}
}
}
GET _search
{
"query": {
"bool": {
"must": [
{
"fuzzy": {
"sNameLngFr": {
"value": "chateau",
"boost": 1,
"fuzziness": 10,
"prefix_length": 0,
"max_expansions": 100
}
}
},
{
"match": {
"iPromotion": 1
}
}
],
"should": [
{
"match": {
"bDateEnd": true
}
},
{
"bool": {
"must": [
{
"range": {
"dDateDebut": {
"lte": "14-05-2014"
}
}
},
{
"range": {
"dDateFin": {
"gte": "14-05-2014"
}
}
}
]
}
}
],
"minimum_number_should_match": 1
}
}
}