如何在 Elasticsearch 中的字符串列表中进行搜索?
How do I search within an list of strings in Elastic Search?
我的数据有一个字段 localities,它是一个字符串数组。
"localities": [
"Mayur Vihar Phase 1",
"Paschim Vihar",
"Rohini",
"",
"Laxmi Nagar",
"Vasant Vihar",
"Dwarka",
"Karol Bagh",
"Inderlok" ]
我应该编写什么查询来按特定位置过滤文档,例如 "Rohini"?
一个简单的 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 中非常重要的主题,对您的查询方式有很大影响。
POST /_search
{
"query": {
"match": {
"localities": "Rohini"
}
}
}
或者您可以简单查询:
GET /_search?q=localities:Rohini
我的数据有一个字段 localities,它是一个字符串数组。
"localities": [
"Mayur Vihar Phase 1",
"Paschim Vihar",
"Rohini",
"",
"Laxmi Nagar",
"Vasant Vihar",
"Dwarka",
"Karol Bagh",
"Inderlok" ]
我应该编写什么查询来按特定位置过滤文档,例如 "Rohini"?
一个简单的 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 中非常重要的主题,对您的查询方式有很大影响。
POST /_search
{
"query": {
"match": {
"localities": "Rohini"
}
}
}
或者您可以简单查询:
GET /_search?q=localities:Rohini