elasticsearch,Php,elasticsearch" /> elasticsearch,Php,elasticsearch" />

Php elasticsearch中的布尔或查询

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

我正在尝试在ElasticSearch中创建一个包含AND和OR条件的查询

以下是一些示例数据:

 {
            "_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
      }
   }
}