在ElasticSearch中索引的数组中搜索


Searching in an array indexed in ElasticSearch

我在ElasticSearch中索引了一个包含如下数组的文档:

{
    "student": "John",
    "sport": "Soccer",
    "match": 
    {
        "eventType": "League",
        "date": "2013-12-31T11:00:00.000Z"
    }
}

我需要执行查询搜索,例如,所有联赛(即,其中doc["match"]["eventType"] == "League")

我正在使用ElasticSearch-PHP api 1.1.0,并尝试像这样查询,没有成功:

$params['body']['query']['match']['match']['eventType'] = 'League';

我也试过:

$params['body']['query']['match']['match']->eventType = 'League';

正确的搜索方法是什么?文档中没有这样的例子。

是否可以将JSON转换为php对象?

{
    "query": {
        "match": {
           "match.eventType": "League"
        }
    }
}

我想这能行。

作为第一步,尝试为您的足球'match'使用不同的名称,并将其称为'game',以防止与'match'操作的使用发生冲突。