我正在尝试学习弹性搜索
与php composer包的帮助。我有一个索引
,其名称为media_data
,其中包含nits_account
、nits_url
、session_id
、timestamp
字段。我想有基于以上字段的过滤器,它应该在和
操作符。我当前的查询代码是:
$items = $this->elasticsearch->search([
'index' => $index_name,
'body' => [
'query' => [
'filtered' => [
'filter' => [
'and' => [
['match' => ['nits_account' => 'xyzABCD2190-aldsj']], //API Key
['match' => ['nits_url' => 'google.com']],
]
]
]
]
]
]);
我的问题是:
>
我无法获取数据。但是如果我执行下面的代码:
$items = $this->elasticsearch->search([
'index' => $index_name,
'body' => [
'query' => [
'bool' => [
'should' => [
['match' => ['nits_account' => $account] ],
['match' => ['nits_url' => $domain] ],
],
],
]
]
]);
我在或
运算符中获取值,但需要在其中包含和
操作。
试试这个:
$items = $this->elasticsearch->search([
'index' => $index_name,
'body' => [
'query' => [
'bool' => [
'must' => [
['match' => ['nits_account' => $account] ],
['match' => ['nits_url' => $domain] ]
],
],
]
]
]);
您应该使用must
关键字,而不是shoul
关键字。必须
类似于AND操作,而应该
类似于OR操作。
请参见https://stackoverflow.com/a/28768600/5430055
"query": {
"bool": {
"must": [
{
"range": {
"nits_url": {
"gte": 1000,
"lte": 10000
}
}
},
{
"match": {
"nits_account": "$account"
}
}
]
}
}
由于已经有很多关于连字符的问题,我已经尝试了以下解决方案: 使用字符筛选器:ElasticSearch-在名称中使用连字符进行搜索。 所以我做了这个映射: 所以char筛选器似乎没有在搜索字符串上执行?我该怎么做才能让它起作用?
尝试使用通配符进入和弹性搜索精确短语搜索时遇到问题query_string。 希望能够返回结果,这将是所有变体的精确短语。i、 e.“库尔斯酿酒厂”、“库尔斯酿酒厂”、“库尔斯酿酒厂”等。 我不同意这种方法,但想搜索大部分文档以找到匹配的1或2个字段。
问题内容: 我想以查询其他字段的相同方式将多值字段的值查询为单独的“字段”。我有这样的数据结构: 我的查询如下所示: 仅当值包含我的整个查询时,“类型”和“运算符”才能完美匹配单个值字段。例如,查询“ foo two”不会返回匹配项。 我希望标签字段的行为相同。现在,查询“东西”将在不应该返回匹配项时返回匹配项,因为没有字段或标记值将两个单词都包含在一个值中。有没有办法做到这一点? 编辑 Val的
这很有魅力: 但如果我想按多个单词搜索,它将不返回任何内容,例如: 当我使用CURL时,我通过将添加到我的JSON属性来解决这个问题: 卷曲-XGET“http://localhost:9200/_search“-d”{“查询”:{“匹配”:{“字段”:{“查询”:“word\u 1 word\u 2”,““模糊性”:“自动”,““运算符”:“和”}}}}}” 我如何在Java中实现这一点?
我使用Elasticsearch允许用户输入要搜索的术语。例如,我要搜索以下属性'name': 如果使用以下代码搜索或,我希望返回此文档。 我尝试过做一个bool must和做多个术语,但它似乎只有在整个字符串都匹配的情况下才起作用。 所以我真正想做的是,这个词是否以任何顺序包含两个词。 有人能帮我走上正轨吗?我已经在这上面砸了一段时间了。
如何配置Netflix conductor以运行独立的弹性搜索而不是嵌入式弹性搜索?