繁体   English   中英

elasticsearch搜索过滤器等于问题

[英]elasticsearch search filter equals issue

我有以下映射的人员数据库索引。

{
    "person" : {
                "sex"       : { "type" : "string" },
                "dob"      : { "type" : "string" },         
                "fname"      : { "type" : "string" },
                "lname"      : { "type" : "string" },
                "phone"      : { "type" : "string" }
      }
}

我需要找到带有多个条件子句的所有匹配条目。

Dob +电话+性别(OR)fname + lname + dob

如何为上述条件创建查询或过滤器(使用布尔值)。 另外,我需要查询或过滤不区分大小写的内容。

有任何想法吗?

谢谢

嵌套两套必须查询的内查询将满足您的要求,请参阅布尔的详细资料:

curl -XGET 'http://localhost:9200/people/person/_search?pretty' -d '{
   "query": {
      "bool": {
         "should": [
             {"bool": {
                "must": [
                  {"match": { "sex" : "male" }},
                  {"match": { "dob" : "2000-11-14" }},
                  {"match": { "phone" : "1234 67889" }}
                ]
              }
             },
             {"bool": {
                "must": [
                  {"match": { "fname" : "bob" }},
                  {"match": { "dob" : "2000-11-14" }},
                  {"match": { "lname" : "smith" }}
                ]
              }
             }
            ]
        }
     }
 }'

另外,我需要查询或过滤不区分大小写的内容。

标准分析器会以小写字母索引数据- 匹配查询会将相同的分析器应用于您的搜索字词。

另外-将DOB作为日期存储将是一个好主意。

您应该将映射更改为嵌套对象,然后才能使用嵌套过滤器或查询。 由于您要区分大小写,因此需要在嵌套查询中使用匹配查询。

有关映射的更多信息: http : //www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-nested-type.html#mapping-nested-type

{
    "type1" : {
        "properties" : {
            "person" : {
                "type" : "nested",
                "properties": {
                    "sex" : {"type": "string" },
                    "dob"  : {"type": "string" }
                }
            }
        }
    }
}

然后创建嵌套查询: http : //www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-nested-query.html#query-dsl-nested-query

{
    "nested" : {
        "path" : "person",
        "query" : {
            "bool" : {
                "must" : [
                    {
                        "match" : {"person.dob" : "xx"}
                    },
                    {
                        "range" : {"person.sex" : "male"}
                    }
                ]
            }
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM