2017-03-01 14 views
0

我一直在使用query_string來過濾出結果。現在的問題是,當我嘗試使用查詢字符串作爲「我愛我的工作和我的老闆」彈性搜索治療和作爲運營商和我的結果出錯。在query_param彈性搜索中使用AND的問題

但是,在這種情況下,AND不是運營商。

如何判斷AND不是運算符及其對elasticsearch的字符串。任何解決這個問題的方法都會有很大的幫助。

在此先感謝。

EDIT-1 (QUERY_STRING)

{ 
    "_source": ["customer.ezPayId", "customer.billingContact.name", "customer.serviceContact.name", "customer.wmMetaData.library"], 
    "query": { 
     "bool": { 
      "must_not": [{ 
       "term": { 
        "customer.lob": { 
         "value": "residential" 
        } 
       } 
      }], 
      "should": [{ 
       "query_string": { 
        "query": "ROCHESTER GAS AND ELECTRIC" 
       } 
      }, 
      { 
       "regexp": { 
        "customer.serviceContact.name_ivr": "ROCHESTER GAS AND ELECTRIC<0-999>" 
       } 
      }, { 
       "regexp": { 
        "customer.billingContact.name_ivr": "ROCHESTER GAS AND ELECTRIC<0-999>" 
       } 
      }, { 
       "regexp": { 
        "customer.serviceContact.name_ivr": ".<0-999>ROCHESTER GAS AND ELECTRIC" 
       } 
      }, { 
       "regexp": { 
        "customer.billingContact.name_ivr": ".<0-999>ROCHESTER GAS AND ELECTRIC" 
       } 
      }, { 
       "regexp": { 
        "customer.serviceContact.name_ivr": "ROCHESTER GAS AND ELECTRIC[0-9-',(/)@%#&*$!^+_|]" 
       } 
      }, { 
       "regexp": { 
        "customer.billingContact.name_ivr": "ROCHESTER GAS AND ELECTRIC[0-9-',(/)@%#&*$!^+_|]" 
       } 
      }] 
     } 
    }, 
    "filter": { 
     "or": [{ 

     { 
      "term": { 
       "customer.billingContact.name_ivr": "ROCHESTER GAS AND ELECTRIC" 
      } 
     }, { 
      "term": { 
       "customer.serviceContact.name_ivr": "ROCHESTER GAS AND ELECTRIC" 
      } 
     }, { 
      "regexp": { 
       "customer.serviceContact.name_ivr": "ROCHESTER GAS AND ELECTRIC<0-999>" 
      } 
     }, { 
      "regexp": { 
       "customer.billingContact.name_ivr": "ROCHESTER GAS AND ELECTRIC<0-999>" 
      } 
     }, { 
      "regexp": { 
       "customer.serviceContact.name_ivr": ".<0-999>ROCHESTER GAS AND ELECTRIC" 
      } 
     }, { 
      "regexp": { 
       "customer.billingContact.name_ivr": ".<0-999>ROCHESTER GAS AND ELECTRIC" 
      } 
     }, { 
      "regexp": { 
       "customer.serviceContact.name_ivr": "[0-9-',(/)@%#&*$!^+_| ].+ROCHESTER GAS AND ELECTRIC" 
      } 
     }, { 
      "regexp": { 
       "customer.billingContact.name_ivr": "[0-9-',(/)@%#&*$!^+_| ].+ROCHESTER GAS AND ELECTRIC" 
      } 
     }, { 
      "regexp": { 
       "customer.serviceContact.name_ivr": "ROCHESTER GAS AND ELECTRIC[0-9-',(/)@%#&*$!^+_| ].+" 
      } 
     }, { 
      "regexp": { 
       "customer.billingContact.name_ivr": "ROCHESTER GAS AND ELECTRIC[0-9-',(/)@%#&*$!^+_| ].+" 
      } 
     }, { 
      "regexp": { 
       "customer.serviceContact.name_ivr": "(.*) ROCHESTER GAS AND ELECTRIC (.*)" 
      } 
     }, { 
      "regexp": { 
       "customer.billingContact.name_ivr": "(.*) ROCHESTER GAS AND ELECTRIC (.*)" 
      } 
     }] 
    } 
} 
+1

顯示完整的查詢 –

+0

你需要與運營商爲其他搜索? –

+0

@MithileshGupta:我用查詢字符串編輯了我的帖子。請看看它。 –

回答

0

據我瞭解您嘗試使用全文搜索。你可以試試這個例子:

curl -XGET localhost:9200/yourIndex/yourType/_search -d '{ 
    "query" : { "match" : { "yourField" : "I LOVE MY JOB AND MY BOSS" } } 
}' 
1

至於弗拉基米爾建議,如果你並不需要「與」操作,則必須不是你應該子句中使用「QUERY_STRING」查詢。只有在查詢字符串中要使用AND,OR,NOT運算符時,query_string查詢纔有效。 然後,您應該用「匹配」查詢替換它。

您需要通過更換

"should": [{ 
    "query_string": { 
    "query": "ROCHESTER GAS AND ELECTRIC" 
    } 
} 

"should": [{ 
    "match": { 
    "_all": "ROCHESTER GAS AND ELECTRIC" 
    } 
} 

您的查詢將然後看起來像:

{ 
    "_source": ["customer.ezPayId", "customer.billingContact.name", "customer.serviceContact.name", "customer.wmMetaData.library"], 
    "query": { 
     "bool": { 
      "must_not": [{ 
       "term": { 
        "customer.lob": { 
         "value": "residential" 
        } 
       } 
      }], 
      "should": [{ 
       "match": { 
        "_all": "ROCHESTER GAS AND ELECTRIC" 
       } 
      }, 
      { 
       "regexp": { 
        "customer.serviceContact.name_ivr": "ROCHESTER GAS AND ELECTRIC<0-999>" 
       } 
      }, { 
       "regexp": { 
        "customer.billingContact.name_ivr": "ROCHESTER GAS AND ELECTRIC<0-999>" 
       } 
      }, { 
       "regexp": { 
        "customer.serviceContact.name_ivr": ".<0-999>ROCHESTER GAS AND ELECTRIC" 
       } 
      }, { 
       "regexp": { 
        "customer.billingContact.name_ivr": ".<0-999>ROCHESTER GAS AND ELECTRIC" 
       } 
      }, { 
       "regexp": { 
        "customer.serviceContact.name_ivr": "ROCHESTER GAS AND ELECTRIC[0-9-',(/)@%#&*$!^+_|]" 
       } 
      }, { 
       "regexp": { 
        "customer.billingContact.name_ivr": "ROCHESTER GAS AND ELECTRIC[0-9-',(/)@%#&*$!^+_|]" 
       } 
      }] 
     } 
    }, 
    "filter": { 
     "or": [{ 

     { 
      "term": { 
       "customer.billingContact.name_ivr": "ROCHESTER GAS AND ELECTRIC" 
      } 
     }, { 
      "term": { 
       "customer.serviceContact.name_ivr": "ROCHESTER GAS AND ELECTRIC" 
      } 
     }, { 
      "regexp": { 
       "customer.serviceContact.name_ivr": "ROCHESTER GAS AND ELECTRIC<0-999>" 
      } 
     }, { 
      "regexp": { 
       "customer.billingContact.name_ivr": "ROCHESTER GAS AND ELECTRIC<0-999>" 
      } 
     }, { 
      "regexp": { 
       "customer.serviceContact.name_ivr": ".<0-999>ROCHESTER GAS AND ELECTRIC" 
      } 
     }, { 
      "regexp": { 
       "customer.billingContact.name_ivr": ".<0-999>ROCHESTER GAS AND ELECTRIC" 
      } 
     }, { 
      "regexp": { 
       "customer.serviceContact.name_ivr": "[0-9-',(/)@%#&*$!^+_| ].+ROCHESTER GAS AND ELECTRIC" 
      } 
     }, { 
      "regexp": { 
       "customer.billingContact.name_ivr": "[0-9-',(/)@%#&*$!^+_| ].+ROCHESTER GAS AND ELECTRIC" 
      } 
     }, { 
      "regexp": { 
       "customer.serviceContact.name_ivr": "ROCHESTER GAS AND ELECTRIC[0-9-',(/)@%#&*$!^+_| ].+" 
      } 
     }, { 
      "regexp": { 
       "customer.billingContact.name_ivr": "ROCHESTER GAS AND ELECTRIC[0-9-',(/)@%#&*$!^+_| ].+" 
      } 
     }, { 
      "regexp": { 
       "customer.serviceContact.name_ivr": "(.*) ROCHESTER GAS AND ELECTRIC (.*)" 
      } 
     }, { 
      "regexp": { 
       "customer.billingContact.name_ivr": "(.*) ROCHESTER GAS AND ELECTRIC (.*)" 
      } 
     }] 
    } 
}