Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 4 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
Elastica: elasticsearch PHP Client
==================================

[![Latest Stable Version](https://poser.pugx.org/ruflin/Elastica/v/stable.png)](https://packagist.org/packages/ruflin/elastica)
[![Build Status](https://github.com/ruflin/elastica/workflows/Continuous%20integration/badge.svg?branch=master)](https://github.com/ruflin/Elastica/actions?query=workflow%3A%22Continuous%20integration%22%20branch%3Amaster)
[![codecov.io](http://codecov.io/github/ruflin/Elastica/coverage.svg?branch=master)](http://codecov.io/github/ruflin/Elastica?branch=master)
[![Dependency Status](https://www.versioneye.com/php/ruflin:elastica/dev-master/badge.svg)](https://www.versioneye.com/php/ruflin:elastica/dev-master)
[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/ruflin/Elastica/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/ruflin/Elastica/?branch=master)
[![Total Downloads](https://poser.pugx.org/ruflin/Elastica/downloads.png)](https://packagist.org/packages/ruflin/elastica)
[![Latest Stable Version](https://poser.pugx.org/ruflin/Elastica/v/stable)](https://packagist.org/packages/ruflin/elastica)
[![Build Status](https://github.com/ruflin/elastica/actions/workflows/continuous-integration.yaml/badge.svg?branch=7.x)](https://github.com/ruflin/Elastica/actions/workflows/continuous-integration.yaml?query=branch%3A7.x)
[![codecov.io](https://codecov.io/gh/ruflin/Elastica/branch/7.x/graph/badge.svg)](https://app.codecov.io/github/ruflin/Elastica/tree/7.x)
[![Total Downloads](https://poser.pugx.org/ruflin/Elastica/downloads)](https://packagist.org/packages/ruflin/elastica)
[![Join the chat at https://gitter.im/ruflin/Elastica](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ruflin/Elastica?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)

All documentation for Elastica can be found under [Elastica.io](http://Elastica.io/).
Expand Down
19 changes: 18 additions & 1 deletion src/AbstractUpdateAction.php
Original file line number Diff line number Diff line change
Expand Up @@ -470,16 +470,33 @@ public function hasUpsert()
}

/**
* array_filterはデフォルトで値がfalseと評価されるものを除外するため、if_seq_noの値が0の場合は除外される。そのため除外しないように修正
*
* @param array $fields if empty array all options will be returned
*
* @return array
*/
public function getOptions(array $fields = [])
{
if ($fields) {
return array_filter(
array_intersect_key($this->getParams(), array_flip($fields)),
function ($value) {
return $value !== null; // nullのみ除外し、0は含める
}
);
}

return array_filter($this->getParams(), function ($value) {
return $value !== null; // nullのみ除外し、0は含める
});
}
/*public function getOptions(array $fields = [])
{
if ($fields) {
return \array_filter(\array_intersect_key($this->getParams(), \array_flip($fields)));
}

return \array_filter($this->getParams());
}
}*/
}
6 changes: 4 additions & 2 deletions src/Index.php
Original file line number Diff line number Diff line change
Expand Up @@ -232,6 +232,8 @@ public function addDocument(Document $doc): Response
'retry_on_conflict',
'routing',
'timeout',
'if_primary_term',
'if_seq_no',
]
);

Expand All @@ -243,8 +245,8 @@ public function addDocument(Document $doc): Response
$data = $response->getData();
// set autogenerated id to document
if ($response->isOk() && (
$doc->isAutoPopulate() || $this->getClient()->getConfigValue(['document', 'autoPopulate'], false)
)) {
$doc->isAutoPopulate() || $this->getClient()->getConfigValue(['document', 'autoPopulate'], false)
)) {
if (isset($data['_id']) && !$doc->hasId()) {
$doc->setId($data['_id']);
}
Expand Down
2 changes: 2 additions & 0 deletions src/Search.php
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ class Search
public const OPTION_SHARD_REQUEST_CACHE = 'request_cache';
public const OPTION_FILTER_PATH = 'filter_path';
public const OPTION_TYPED_KEYS = 'typed_keys';
public const OPTION_SEQ_NO_PRIMARY_TERM = 'seq_no_primary_term';

/*
* Search types
Expand Down Expand Up @@ -457,6 +458,7 @@ protected function validateOption(string $key): void
case self::OPTION_SHARD_REQUEST_CACHE:
case self::OPTION_FILTER_PATH:
case self::OPTION_TYPED_KEYS:
case self::OPTION_SEQ_NO_PRIMARY_TERM:
return;
}

Expand Down
9 changes: 8 additions & 1 deletion tests/IndexTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -569,7 +569,14 @@ public function testAddDocumentAcrossIndices(): void

$index1Doc = $index1->getDocument(1);

$index2->addDocument($index1Doc);
// Since if_primary_term and if_seq_no are automatically set in getDocument,
// it is an error to add them to another Index as is.
// Therefore, convert the acquired document to an Array before calling
$doc = new Document('1');
$arr = $index1Doc->toArray();
$doc->setData($arr['_source']);

$index2->addDocument($doc);
$index2Doc = $index1->getDocument(1);

$this->assertEquals('Hello world', $index2Doc->get('title'));
Expand Down
Loading