我想使用URI搜索(q =)在ElasticSearch中執行AND操作。我該怎麼做?如何在URI中搜索多個字段搜索
如果我有以下文檔: [{「name」:「Test 1」,「pub」:「2」},{「name」:「Test 2」,「pub」:「1」}, {「name」:「A」,「pub」:「1」}]
我想查詢包含名稱包含「測試」和其中酒吧等於「1」的文檔。我怎麼做?
謝謝!
我想使用URI搜索(q =)在ElasticSearch中執行AND操作。我該怎麼做?如何在URI中搜索多個字段搜索
如果我有以下文檔: [{「name」:「Test 1」,「pub」:「2」},{「name」:「Test 2」,「pub」:「1」}, {「name」:「A」,「pub」:「1」}]
我想查詢包含名稱包含「測試」和其中酒吧等於「1」的文檔。我怎麼做?
謝謝!
假設你的文件看起來是這樣的:
{
"my_field": [
{ "name":"Test 1", "pub":"2"},
{ "name":"Test 2", "pub":"1"},
{ "name":"A", "pub":"1"}
]
}
和my_field
映射是nested
相似類型的這樣:
{
"mappings": {
"doc_type": {
"properties": {
"my_field": {
"type": "nested",
"properties": {
"name": { "type": "string" },
"pub": {"type": "integer" }
}
}
}
}
}
}
然後你就可以查詢索引和用以下nested
查詢預期文檔:
POST /_search
{
"query": {
"nested": {
"path": "my_field",
"query": {
"bool": {
"filter": [
{
"match": {
"name": "Test"
}
},
{
"match": {
"pub": 1
}
}
]
}
}
}
}
}
所以,如果我改變,所以使用嵌套類型,而不是...我會然後能夠做一個查詢字符串,如:_search?q = this:100 and that:> 100 這個和那個領域? 因爲我認爲Elaticsearch可以在任何字段組合上完全搜索,所以doc.myList.this.item:Who AND doc.userData.that.name:Test –
查詢字符串查詢支持所有類型的查詢...除了父/子文檔和嵌套字段(請參閱[公開問題](https://github.com/elastic/elasticsearch/issues/16551)) – Val
啊哈,好的,這就是爲什麼。謝謝 –
其實你需要嵌套的字段。以下是一個很好的資源。
https://www.elastic.co/guide/en/elasticsearch/guide/current/nested-objects.html
你的映射是怎樣的?正如下面的「答案」所暗示的那樣,你的字段需要嵌套,你將無法使用'q = ...'查詢它,你需要一個完整的''嵌套'查詢。 – Val
因此,爲了能夠將GET的JSOB正文發送到_search,查詢DSL? –
看到我的答案 – Val