Comments (3)
You can just normalize your data on index time using the buildDocument method:
class Activity {
use Searchable;
public function buildDocument()
{
return $this->load('user')->toArray();
}
public function user()
{
return $this->hasOne('App\User');
}
}
Then your document in elastic will look like:
{
id: 1,
name: "My activity",
user: {
id: 1,
name: "joe",
email: "[email protected]"
...
}
}
and you can search like this:
Activity::search()->filter()->term('user.name', 'joe');
I would use a nested document for users, so you have to adjust your mapping:
$map->nested('user', function (Blueprint $map) {
$map->string('id');
$map->string('name');
$map->string('email');
});
Query will then look like
Activity::search()->nested('user', function (SearchBuilder $builder) use ($term) {
$builder->match('user.name', $term);
});
from plastic.
Hi @mschreck and thanks for the answer.
The first part is working perfect.
I`ve decided to try with the nested query and mapping but it isn't working.
Is there anything special that I should do when I want to use the nested queries?
from plastic.
@belov91 nested queries needs special mappings for instance in your Activity model mapping you need something like this.
$map->nested('user', function (Blueprint $blueprint) {
$blueprint->integer('id');
$blueprint->string('name', [
'store' => 'true',
'index' => 'analyzed',
'analyzer' => 'english',
]);
//...
});
ll reopen the issue if needed
from plastic.
Related Issues (20)
- Nested query fails. Issue with Mapping?
- How to sync a property of a many-to-many relation (using a pivot table)?
- "Nothing to map" message but mappings exist HOT 1
- Can't populate the index with correct data HOT 1
- Update set id to 0 in elasticsearch HOT 1
- Populate and run mappings from json
- There is no good way to set custom model fillers
- Search on Translatable model HOT 1
- Compatibility and status of project HOT 3
- Feature request: Set search parameters for a query HOT 1
- return api response
- phrase_match with Plastic HOT 1
- plastic:populate does not include deleted records
- Consider this package unmaintained HOT 5
- Default $current for paginator in v0.3.1
- IAM - Signed Requests using Plastic
- Make plastic compatible with Laravel 5.7 HOT 5
- Is this project abandoned? HOT 1
- [ErrorException] filter_var(): explicit use of FILTER_FLAG_SCHEME_REQUIRED and FILTER_FLAG_HOST_REQUIRED is deprecated HOT 3
- How do I know actual search lucene query while using this library?
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from plastic.