我使用彈性2.2和Sense。Elasticsearch與And&Or查詢相同的查詢 - 布爾查詢?
我有以下問題來澄清我正在思考的一種方法。
Elasticsearch是一個全文搜索引擎,而不是一個SQL數據庫,但是它仍然可以在代數(AND,OR,WHERE等)方面思考ES查詢。
我不在乎這方面的分數。
假設我有以下的平坦文件類型的客戶,在各個領域都not_analysed,在映射屬性是:
"properties": {
"address": {
"type": "string",
"index": "not_analyzed"
},
"age": {
"type": "long"
},
"customerid": {
"type": "string",
"index": "not_analyzed"
},
"firstname": {
"type": "string",
"index": "not_analyzed"
},
"lastname": {
"type": "string",
"index": "not_analyzed"
},
"updated": {
"type": "date",
"format": "date_hour_minute_second_millis"
}
}
我現在指數:
PUT customers_ds/customers/1
{
"customerid": "1",
"firstname": "Marie",
"address": "Brazil",
"updated": "2017-01-13T02:36:37.292",
"lastname": "Doe",
"age": 20
}
PUT customers_ds/customers/2
{
"customerid": "1",
"firstname": "John",
"address": "North America",
"updated": "2017-01-13T02:36:37.292",
"lastname": "Doe",
"age": 25
}
什麼我應該寫的查詢說:
我希望所有的客戶在那裏的第一個名字是瑪麗,或者他們生活在「北美」
select * from customers where firstname = "Marie" or address = "North America"
如何寫這樣ES查詢?
最後,如何寫:
select * from customers where firstname = "Marie" and lastname = "Doe" or address = "North America"
在這最後詢問我想從ES找回:由於OR的
瑪麗和約翰。或地址=「北美」,而瑪麗將在AND中匹配。讓我知道這是否清楚。
???
「分析所有字段」=>您映射中的所有字符串字段都是「not_analyzed」。你能澄清嗎? – Val
HI @Val - 我的意思是不分析所有字段的位置。我正在編輯它 –