我的数据有一个字段属性,这是一个字符串数组。
"localities": [
"Mayur Vihar Phase 1",
"Paschim Vihar",
"Rohini",
"",
"Laxmi Nagar",
"Vasant Vihar",
"Dwarka",
"Karol Bagh",
"Inderlok" ]
我应该写什么查询来过滤特定地区的文件,例如" Rohini"?
答案 0 :(得分:1)
简单的match
查询就足够了(如果您不知道localities
字段的映射)。
POST <your index>/_search
{
"query": {
"match": {
"localities": "Rohini"
}
}
}
如果localities
字段设置为string
类型而index
字段设置为not_analyzed
,则查询此字段的最佳方法是使用term
过滤器,包含在filtered
查询中(不能直接使用过滤器):
POST <your index>/_search
{
"query": {
"filtered": {
"filter": {
"term": {
"localities": "Rohini"
}
}
}
}
}
如果你不需要得分,那么第二个解决方案是可行的方法,因为过滤器不会计算分数,更快和缓存。
查看文档以获取有关分析的信息,这是ElasticSearch中非常重要的主题,严重影响您的查询方式。
答案 1 :(得分:0)
POST /_search
{
"query": {
"match": {
"localities": "Rohini"
}
}
}
或者您可以简单地查询:
GET /_search?q=localities:Rohini