我是ElasticSearch的新手。它看起来非常棒,但我对基于JSON的查询语言非常困惑。
我将使用ES作为文档存储。我有兴趣进行查询,例如“获取年龄= 25岁的所有文件”,或“获取所有文件,其中name ='john'和city ='london'”。但是我还没有理解如何做到这一点。
我可以这样做:
{ “查询”:{ “比赛”: { “年龄”:“25” } } }
但这就是我要找的东西吗?我认为这也会返回age
为“25个苹果”的文件。
请解释如何针对ES发出此类简短查询。
答案 0 :(得分:0)
对于age
匹配,您可以使用term Query
。 Term Query寻找完全匹配。
{
"query": {
"term": {
"age": "25"
}
}
}
答案 1 :(得分:0)
如果你害怕查询DSL,你可能不那么害怕使用query string mini-language(接近Lucene查询语言)passed directly in the URI和q=
查询字符串参数,学习和事件可能有点简单,虽然它有一些限制,它可以让你走很长的路。
例如,为了查询年龄= 25的所有文档,您可以这样做:
curl -XGET 'localhost:9200/_search?q=age:25'
对于年龄介于25至30岁之间的所有文件:
curl -XGET 'localhost:9200/_search?q=age:[25 TO 30]'
适用于年龄介于25至30岁之间且国家/地区US
的所有文件:
curl -XGET 'localhost:9200/_search?q=age:[25 TO 30] AND country:us'
答案 2 :(得分:0)
To get all documents where (name = john and city = london).You can use following command:
GET /bank/account/_search?q=firstname:Rodriquez%20AND%20age:31
Or,You can also try Filters:
GET /demo/post/_search?pretty=true
{
"query": {
"filtered": {
"filter": {
"and": [
{
"term": {
"name": "john"
}
},
{
"term": {
"city": "london"
}
}
]
}
}
}
}